Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tous le monde,
Qui pourra avoir la gentillesse et me traduira cette requête en doctrine1.2
SELECT l.* FROM bur_ligue bl, personne p, ligue l WHERE bl.id_pers = p.id_pers AND bl.id_ligue = l.id_ligue AND bl.id_pers = 275 AND bl.active = 1
Je me suis pas encore forgée en langage DQL.
Merci d'avance.
Dernière modification par Bouchra (02-05-2012 00:46:13)
Hors ligne
Salut, déjà ta requête n'est pas bien formaté pour du SQL classique, les jointures dans la clause WHERE c'est très lent, en plus d'être crade. Donc tu peux déjà traduire ta requête comme ceci
SELECT l.* FROM bur_ligue bl INNER JOIN personne p ON bl.id_pers = p.id_pers INNER JOIN bl.id_ligue = l.id_ligue WHERE bl.id_pers = 275 AND bl.active = 1
Avec cette requête ça te sera plus simple de la traduire en DQL. Si tu n'y parviens pas il est possible de demander à doctrine d'exécuter une requête SQL par contre tu devras mapper les champs que tu vas avoir en retour.
En DQL je te donne un début de piste :
[lang=php] $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('l')->from('Entite_Ligue', 'l')->innerJoin('Entite_bur_ligue', 'bl')->innerJoin('Entite_personne', 'p')->where('bl.id_pers = ?1')->andWhere('bl.active = ?2'); $query = $qb->getQuery()->setParameters(array(1 => 275, 2 => 1));
C'est du Doctrine 2 donc à adapter mais ça devrait te donner un bon début de piste.
Hors ligne