我想让一个用户成为多个组的成员。所以,我有变量groupsId,但不知道如何在"中添加"当我有"成员"。
libphonenumber
答案 0 :(得分:0)
试试这个,尚未测试
SELECT u.id FROM user u JOIN u.groups g WITH g.id IN :groupsId WHERE u.id = :userId AND SIZE(u.groups) > 1
SIZE(u.groups)> 1 检查多个组中的用户成员资格。
答案 1 :(得分:0)
您可以使用QueryBuilder代替,这有助于您更快,更轻松地构建查询。
您可以执行以下操作:
$expr = $em->getExpressionBuilder();
$query = $em->getRepository('App\Entity\User')
->createQueryBuilder('u')
->select('u.id', 'count(g.id) as HIDDEN cnt')
->innerJoin('u.groups', 'g', 'WITH', $expr->in('g.id', ':groupsIds'))
->where('u.id = :userId')
->having('cnt > 1')
->setParameters(array(
'userId' => 1,
'groupsIds' => array(1, 2, 3),
))
->groupBy('u.id')
->getQuery();
var_dump($query->getResult());
die;
编辑:我改进了查询,因为我发现您希望多个 。