php - Doctrine "group by"不返回所有现有对象

标签 php mysql symfony doctrine-orm

我有一个包含用户警报的表,我想获取按创建警报的用户分组的所有警报的列表。

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

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

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

有什么方法可以让所有警报按用户分组吗?我期待得到数组和数组。

最佳答案

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

如果您想要单个用户的所有Alarm,您必须使用group_concat,而Doctrine 又没有。您必须注册自定义 DQL 函数。 Check here

关于php - Doctrine "group by"不返回所有现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38819586/

相关文章:

Symfony 服务仅在方法调用后启动

php - Doctrine 将一个实体发送给 DQL 的 NEW 构造函数

php - Symfony 从数据库生成实体

php - 为什么备用语法 switch 语句中的输出会导致语法错误

php - 添加到候选名单 PHP MYSQL 或 JQUERY?

PHP |反向希伯来文字符串,但没有反向英文字母

php - 如何仅刷新php中的特定功能?

mysql - NOW() 到今天或昨天凌晨 3 点之间的记录

mysql - 更新列如果 count(id) 在表中有多个

mysql - 从mysql中选择计数