Doctrine“group by”不返回所有现有对象

时间:2016-08-07 23:42:10

标签: php mysql symfony doctrine-orm

我有一个包含用户警报的表格,我想获得由创建它们的用户分组的所有警报的列表。

$qb = $this->em->getRepository('AppBundle:Alarm')->createQueryBuilder('a')->groupBy('a.userId');
$result = $qb->getQuery()->getResult();

问题是我每个用户只收到一个警报而不是他现有的所有警报。

如果我删除该组,则会收到所有警报。

有什么方法可以让用户分组所有闹钟?我期待得到阵列数组。

1 个答案:

答案 0 :(得分:1)

这正是groupBy子句应该工作的方式。它为Alarm中的每一个选择第一个user项。

如果您希望单个用户拥有所有Alarm,则必须与group_concat一起使用Doctrine。您必须注册自定义DQL功能。 Check here