我有这个架构:
Entity Doctrine-generated Entity
+++++++++ ++++++++++++++++ +++++++
+Student+ ----- +Student/Events+ ------ +Event+
+++++++++ ++++++++++++++++ +++++++
这说明学生可以举办很多活动,并以ManyToMany关系代表。学生是这段关系的拥有者。
每个Event
都添加了增量id
并与Student
相关联。当然,由于ManyToMany
。
我正在使用event sourcing
,因此每个Student
都有一个status
,该状态是学生的最后一个事件。
现在我想获取具有给定状态的所有Students
,例如,“IN_REVIEW”。请记住,状态由学生的最后一次事件表示。
¿我怎样才能在一次数据库访问中使用doctrine?更具体地说,我想使用查询构建器执行此操作。
PD:我有以下代码:
$qb->select('a')
->from("DnDRaHApiBundle:Student", "a")
->leftJoin("a.status", "s");
但无法弄清楚如何在映射表上查询。我已经考虑过以反向id顺序获取Events
的所有Student
,然后用它来查询学生,但我不喜欢这种方法,必须有更好的方法
答案 0 :(得分:0)
根据我的理解,我可以向你提出这个问题:
$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');