我有此架构:
Entity Doctrine-generated Entity
+++++++++ ++++++++++++++++ +++++++
+Student+ ----- +Student/Events+ ------ +Event+
+++++++++ ++++++++++++++++ +++++++
这所说的是,学生可以有很多事件,并且具有多托马尼的关系。学生是关系的自有方面。
添加每个Event
的id
并将其关联到Student
。当然,映射表是由ManyToMany
自动生成的。
我正在为此使用event sourcing
,因此每个Student
都有status
,该状态是学生的最后一个事件。
现在,我想获取所有具有给定状态的Students
,例如" IN_REVIEW"。请记住,状态由学生的最后一个活动表示。
»仅在一次数据库中,我该如何用学说来做到这一点?更具体地说,我想使用查询构建器进行此操作。
pd:我有以下代码:
$qb->select('a')
->from("DnDRaHApiBundle:Student", "a")
->leftJoin("a.status", "s");
,但无法弄清楚如何在映射表上查询。我已经考虑过以相反的ID顺序获取Student
的所有Events
,然后用它来查询学生,但我不喜欢这种方法,必须有更好的方法。
,我可以理解,我可以向您建议:
$qb->select('Distinct a')
->from("DnDRaHApiBundle:Application", "a")
->leftJoin("a.status", "s")
->where('s.name = :name')//change name and put your real attribute
->orderBy('s.id','Desc')//the most recent have a the higher id
->setParameter('name','APPROVED');