【发布时间】:2015-05-21 04:14:12
【问题描述】:
我有这个架构:
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,然后使用它来查询学生,但我不喜欢这种方法,必须有更好的方法。
【问题讨论】:
-
因此,您有多个学生的事件和事件类型,并且您想要获取具有特定事件类型的所有学生,该事件类型是他们最近的事件? Application 实体如何适应这个?
-
@Richard 我复制粘贴了我的代码而不更改它,我现在就编辑它......但在这种情况下,Application == Student
标签: php mysql symfony doctrine-orm event-sourcing