J'essaie de reproduire cette requête avec le querybuilder mais je m'y perd

La requête me donne la liste des enfants non inscrits à la plaine 5

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 SELECT * FROM `mercredi`.`enfant` LEFT JOIN ( 
              SELECT * FROM plaine_enfant WHERE plaine_id = 5 ) ef 
              ON enfant.id = ef.enfant_id 
          WHERE ef.plaine_id IS NULL ORDER BY `enfant`.`nom` ASC
Mes tests foireux :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
$qb = $this->createQueryBuilder('e');
        $qb->select('e');
        $qb->leftJoin('e.plaines', 'ef', 'WITH', 'ef.plaine_id = '.$plaine->getId());
        $qb->addSelect('ef');
        $qb->andWhere('ef.plaine_id IS NULL');
 
$qb->add('where')->notIn(
                $qb2->select('ef')
                        ->andwhere('ef.plaine = :plaine')
                        ->setParameter('plaine', $plaine->getId()));
Merci