Jointure avec doctrine

lowdance
Invité n'ayant pas de compte PHPfrance

06 déc. 2011, 12:45

Bonjour,

J'aimerais arriver aux résultats suivants :

J'ai une table 'Personnes'.

J'ai une table 'adjectifs' qui est liées a 'Personnes' ( Relations N N, il y a donc une table de liaison.)

J'aimerais pouvoir récupérer toutes les personnes avec certains adjectifs passé dans un tableau avec tout leurs adjectifs.

Peter est comique et honnete
Jean est serieux et travailleur.
Patrique est serieux et intéligent.


Je passe le parametre "serieux" et je veux me retrouver avec :

Jean est serieux et travailleur.
Patrique est serieux et intéligent.


Pour le moment j'ai quelques chose de ce genre :
  	$q= Doctrine_Query::create()
    	->from('Personne p')
    	->leftjoin('p.Adjectifs a');
    	if($adjectifs) {
    	foreach($adjectifs as $adjectif) {  //adjectif représente l'id
    	$q->where('a.id = ?', $ajectif);
    	}
    	}

Merci d'avance pour votre aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 déc. 2011, 11:08

Est-ce que tu as essayé, et dans le cas échéant, quel a été ton résultat ?
C'est comme ça que l'on apprend : en essayant.

Sinon, regarde du côté de whereIn()
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 127 Messages

08 déc. 2011, 12:47

Bonjour,

pour ajouter des conditions de jointure en Doctrine 2, tu peux utiliser andWhere() et non where():

Code : Tout sélectionner

$em = $this->getEntityManager(); $query = $em->createQueryBuilder(); $query->select('fg'); $query->from('xxx', 'fg'); // where $query->andWhere('fg.count > 0'); $query->andWhere('fg.abcd = :abdce'); $query->setParameter('abdce', $abcde);

a+