我有User
和UserGroup
实体。每个用户都有一个组(UserGroup
),每个用户都有一个老板(User
)。
我想获取一个群组列表,并确定当前用户是否是该群组中某人的老板。我已经在SQL中实现了它,现在我尝试使用Doctrine解决它。这是我尝试过的:
$qb = em()->createQueryBuilder()
->select(array('gr.id AS group_id', 'gr.name AS group_name', 'COUNT(us.boss = :current_user_id)>0 AS is_boss'))
->from('\App\Entity\UserGroup', 'ug')
->leftJoin('\App\Entity\User', 'us', 'WITH', 'us.group = ug.id')
->setParameter('current_user_id', $_SESSION['uid'])
->groupby('gr.id')
;
$groups = $qb->getQuery()->getScalarResult();
不幸的是,我遇到了QueryException
,但是我不知道该如何解决。怎样在COUNT(...)
函数中放入表达式?
答案 0 :(得分:1)
您可以使用Mysql case function进行此操作:
$queryBuilder->addSelect('case when COUNT(case when us.boss = :current_user_id then 1 else 0 end)>0 then 1 else 0 end AS is_boss');
参考