Doctrine - 查询相关实体的条件

时间:2015-05-19 18:57:10

标签: php mysql symfony doctrine-orm event-sourcing

我有这个架构:

 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,然后用它来查询学生,但我不喜欢这种方法,必须有更好的方法

1 个答案:

答案 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');