Doctrine2多对多

时间:2016-03-07 11:57:07

标签: symfony doctrine-orm

我想让一个用户成为多个组的成员。所以,我有变量groupsId,但不知道如何在"中添加"当我有"成员"。

libphonenumber

2 个答案:

答案 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;

编辑:我改进了查询,因为我发现您希望多个