Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-05-2012 22:54:52

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Traduction d'une requête SQL en DQL

Bonjour tous le monde,

Qui pourra avoir la gentillesse et me traduira cette requête en doctrine1.2

Code:

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

 

#2 02-05-2012 10:58:44

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Traduction d'une requête SQL en DQL

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

Code:

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 :

Code:

[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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages