2013-05-16 72 views
0

在SonataAdminBundle/SonataUserBundle的情況下,我使用查詢生成器,以靜態過濾器添加到「列表」查詢:學說2 - 外連接查詢

與此查詢,我得到的只是在用戶組「鋸割」,查詢效果很好:

$query 
    ->leftJoin($query->getRootAlias().'.groups', 'g') 
    ->andWhere('g.name = :group_name') 
    ->setParameter('group_name', 'Juge'); 

在其他管理類,我想要做的這個查詢的oposite:得到誰的「鋸割」組中沒有用戶。我該如何執行此操作?教條2中沒有外連接功能嗎?

回答

2

我想你想要做的

$query 
    ->leftJoin($query->getRootAlias().'.groups', 'g', 
    Expr\Join::WITH, 'g.name = :group_name') 
    ->where('g.name IS NULL') 
    ->setParameter('group_name', 'Juge'); 

其中ExprDoctrine\ORM\Query\Expr

+0

這不適用於在Juge組和至少另一個組的用戶。仍然在尋找正確的答案。 – viarnes

0

我用下面的代碼,它適用於我,它是一種外部聯接。

$qb = $this->getEntityManager()->createQueryBuilder() 
    ->select('u') 
    ->from('UserBundle:User', 'u') 
    ->leftJoin('u.group g WITH g.id = :groupId', false) 
    ->where('g IS NULL') 
    ->groupBy('u.id') 
    ->setParameter('groupId', 12) 
return $qb->getQuery()->getResult();