选择最后一个事件为X类型的所有用户

时间:2014-09-03 22:12:54

标签: mysql symfony doctrine

我正在使用Symfony2和Doctrine。我的模型包括具有交易的用户,这些交易包含一些具有日期的事件。所以我有一个实体类Users,一个实体类Transactions和一个实体类Events。每个事件都有一个字段date和一个字段event_type:如何正确选择任何事务的最后一个注册事件的类型为X的所有用户? (event_type是一个整数)

我希望这是可以理解的, 谢谢你的帮助!

1 个答案:

答案 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事件的事务的用户的列表。您可以将其进一步优化以将其限制为特定日期。

请记住,这些关联可能与您实体中的内容不完全匹配,可能需要进行调整,我做了最好的猜测。