在当前用户和DQL查询中的其他用户之间添加共同选择的COUNT个事件

问题描述

我在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”,因为现在您正在对每个用户的计数进行分组。