La relation entre les trois tables
a oneToMany b
b oneToMany c
Objectif : je veux trouver toutes les données a sans données c
Exemple : le policier Li (a) a trois armes (b) chaque arme a des balles (c)
Ce que je veux trouver, c'est le policier sans balles. Ajoutez les trois pistolets de Police Wang, deux d'entre eux n'ont pas de balles, mais si un pistolet a des balles, alors ne le choisissez pas, je veux trouver le policier sans balles. balles.
J'ai donc écrit le code suivant
$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$qb->select('a', 'b')
->from('aaBundle:a', 'a')
->leftJoin('a.b', 'b')
->leftJoin('b.c', 'c')
->where('c.id is null');
$query = $qb->getQuery();
$result = $query->getArrayResult();
Mais ils ont également trouvé Police Wang, le policier avec une balle dans son arme.
Comment modifier ce code.
Cherchez d'abord l'arme sans balles, puis cherchez l'identité de l'arme (le policier avec des balles), puis PAS DANS