我正在使用Symfony2和Doctrine。我的模型包括具有交易的用户,这些交易包含一些具有日期的事件。所以我有一个实体类Users
,一个实体类Transactions
和一个实体类Events
。每个事件都有一个字段date
和一个字段event_type
:如何正确选择任何事务的最后一个注册事件的类型为X
的所有用户? (event_type是一个整数)
我希望这是可以理解的, 谢谢你的帮助!
答案 0 :(得分:2)
使用symfony 2.3+从控制器内部。您可以使用doctrine查询构建器。类似的东西:
$users = $this->getDoctrine()->getManager()->getRepository('NamespacedBundle:Users')
->createQueryBuilder('u')
->leftJoin('u.transactions','t')
->leftJoin('t.events','e')
->where('e.event_type = :eventType')
->andWhere('t.status = :transStatus')
->orderBy('e.date','DESC')
->setParameter('eventType',$eventType)
//$eventType would be your integer to look for
->setParameter('transStatus','pending')
//You would set this to whatever you are using to indicate non completed transactions
->getQuery()
->getResult();
这应该为您提供所有具有event_type X事件的事务的用户的列表。您可以将其进一步优化以将其限制为特定日期。
请记住,这些关联可能与您实体中的内容不完全匹配,可能需要进行调整,我做了最好的猜测。