Reputation: 162
In the context of the SonataAdminBundle / SonataUserBundle, I'm using the query builder to add static filters to the "list" query :
With this query, I get only users in the group "Juge", the query works well :
$query
->leftJoin( $query->getRootAlias().'.groups', 'g')
->andWhere( 'g.name = :group_name' )
->setParameter('group_name', 'Juge');
In an other Admin class, i want to do the oposite of this query : get the users who ARE NOT in the "Juge" group. How can I perform this? There is not outerJoin function in doctrine 2 right?
Upvotes: 0
Views: 7998
Reputation: 81
I think you want to do
$query
->leftJoin( $query->getRootAlias().'.groups', 'g',
Expr\Join::WITH, 'g.name = :group_name')
->where('g.name IS NULL')
->setParameter('group_name', 'Juge');
where Expr
is Doctrine\ORM\Query\Expr
.
Upvotes: 2
Reputation: 5334
I used the following code and it works for me, its a kind of Outer Join.
$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();
Upvotes: 1