Php Symfony2获取组中非相关的多对多用户

Php Symfony2获取组中非相关的多对多用户,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我在Symfony2项目中使用了多对多关联的用户和组实体。 我已成功获得与form builder中的组关联的用户,如下所示: $builder->add('members', 'entity', array( 'class' => 'TesarUserBundle:User', //.... 'query_builder' => function(\Tesar\UserBundle\Entity\UserRepository $er ) use ($op

我在Symfony2项目中使用了多对多关联的用户和组实体。 我已成功获得与form builder中的组关联的用户,如下所示:

$builder->add('members', 'entity', array(
 'class'         => 'TesarUserBundle:User',
 //....
 'query_builder' => function(\Tesar\UserBundle\Entity\UserRepository $er ) use ($options) {
  return $er->createQueryBuilder('a')
  ->leftJoin('a.groups', 'u')
  ->where('u.id = :id')
  ->setParameter('id', "3");
 }
));
这只是对id为3的组的用户进行leftJoin


我在选择组id为3的非关联用户时遇到问题。到目前为止,我的代码是:

//...
return $er->createQueryBuilder("a")
  ->leftJoin( 'a.groups', 'g', Expr\Join::WITH, 'g.id = :group_id')
  ->where('g.id IS NULL')
  ->setParameter('group_id', "3");
//...
我发现,若两个组中都有一个用户,那个么输出中将包含该用户,这不是我想要的。(有两个测试组和多个用户) 如何选择未与id为3的组关联的用户


编辑: 根据答案,我重写了我的查询生成器,一切似乎都很好

return $er->createQueryBuilder('a')        
->select("u")
->from("TesarUserBundle:User","u")
->leftJoin('u.groups g WITH g.id = :groupId', false)
->where(":groupId NOT MEMBER OF u.groups")
->setParameter('groupId', "2");
我的“where IS NULL”没有真正起作用。不是会员做的把戏。如果有人提出更好的解决方案,请发表评论。不确定它是否遵循最佳实践

public function findWithoutParameter($pid) 
{
    return  $this->getEntityManager()
            ->createQuery("SELECT c"
                    . " FROM AmoMainBundle:Company c "
                    . "WHERE ?1 NOT MEMBER OF c.params ")
            ->setParameter(1,$pid)->getResult();
}
没有QB,但在我的情况下可以与多对多一起工作。我的存储库中的函数。