Condtions sur jointures avec doctrine
Bonjour,
Je cherche à mettre des conditions sur des jointures avec doctrine, mais pour l'instant je ne trouve pas comment procéder.
En SQL je procede de la sorte :
Code:
1 2 3 4 5 6 7
| SELECT DISTINCT p.nom FROM personnes p
INNER JOIN groupes g
INNER JOIN formations f
INNER JOIN evenement e
ON ( p.id = g.id_personne AND g.id IN (1,2,3) )
OR ( p.id = f.id_personne AND f.id IN (1,2,3) )
OR ( p.id = e.id_personne AND e.id IN (1,2,3) ) |
Le but avec un OR et de filtrer les personnes ayant participé à une formation ou appartenant à tel groupe ou encore ayant participé à un événement.
Avec un AND la requête filtrerais les personnes ayant participé à un évenement et appartenant à une formation et ayant participé à un évènement, donc plus restrictif.
Avec Doctrine lorsque je fais ce genre de requete :
Code:
1 2 3 4 5
| SELECT DISTINCT ent FROM Admin\Entity\PrivateDetails ent
JOIN ent.events evs
JOIN ent.groups grp
JOIN ent.formations for
WITH ( evs IN (?1) OR grp IN (?2) OR for IN (?3) ) |
J'utilise la clause WITH pour avoir le ON à la fin de la requête. Mais lorsque doctrine me génère la requête finale je n'ai pas une clause ON unique à la fin comme je le souhaiterais pour que ma requête donne le résultat voulu.
Code:
1 2 3 4 5 6 7
| SELECT DISTINCT * FROM private_details p0_ INNER JOIN private_details_event p2_ ON p0_.id = p2_.private_details_id
INNER JOIN event e1_ ON e1_.id = p2_.event_id AND (e1_.del = 0)
INNER JOIN private_details_group p4_ ON p0_.id = p4_.private_details_id
INNER JOIN groupes g3_ ON g3_.id = p4_.group_id AND (g3_.del = 0)
INNER JOIN private_details_formation p6_ ON p0_.id = p6_.private_details_id
INNER JOIN formation f5_ ON f5_.id = p6_.formation_id
AND (f5_.del = 0) AND ((e1_.id IN (?) OR g3_.id IN (?) OR f5_.id IN (?))) |
Existe il une solution pour obtenir une condition uniquement à la fin de la requête comme dans le premier exemple ?