问题描述
我在Symfony 4项目中有此DQL查询,它确实选择了与当前用户在所有相同事件中注册的所有用户
$query = $this->_em->createquery(
"select u as user,er.dateRegistration from App:EventRegistration er
left join App:User u with er.user = u.id
where er.user != :user_id and
er.event in (select identity(er2.event) from App:EventRegistration er2
where er2.user = :user_id)")
->setParameter('user_id',$user->getId());
return $query->getResult();
现在,在同一查询中,我想选择 COUNT 个,每个其他用户在当前用户的同一事件中已经注册了多少次。
如果我将count(er.id)添加到选择中
select u as user,er.dateRegistration,count(er.id)
我收到此错误:
sqlSTATE [42803]:分组错误:7错误:冒号«u0_.username»do装置名称dan子句GROUP BY ou doitêtreutilisédans une fon d'agrégat 第1行:选择u0_.username AS用户名_0,u0_.username_canonical AS ..
解决方法
您需要添加分组依据;
$query = $this->_em->createQuery(
"select u as user,count(er.id) as register_count from App:EventRegistration er
left join App:User u with er.user = u.id
where er.user != :user_id and
er.event in (select identity(er2.event) from App:EventRegistration er2
where er2.user = :user_id) group by u.id")
->setParameter('user_id',$user->getId());
return $query->getResult();
它将为您提供每个用户的注册计数,但是在这种情况下,您将无法公开“ er.dateRegistration”,因为现在您正在对每个用户的计数进行分组。