Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony2] Faire un rightJoin ?

Sujet résolu
    1 mars 2014 à 23:28:15

    Hello,

    Je cherche à faire l'équivalent d'un rightJoin entre 2 de mes tables, puisque la première peut être vide.

    Voici mon MCD : 

    Ma requête :

    	public function findAllMarksByStudentsByPromotion($promotion_id, $year) 
    	{
    		return $this->createQueryBuilder('m')
    					->leftJoin('m.teachingUnitSubject', 'tus')
    						->addSelect('tus')
    					->leftJoin('tus.subject', 'sub')
    						->addSelect('sub')
    					->leftJoin('tus.teachingUnit', 'tu')
    						->addSelect('tu')
    					->leftJoin('tu.container', 'c')
    						->addSelect('c')
    					->leftJoin('m.studentPromotion', 'sp')
    						->addSelect('sp')
    					->leftJoin('sp.student', 's')
    						->addSelect('s')
    					->leftJoin('sp.promotion', 'p')
    						->addSelect('p')
    
    					->where('sp.promotion = :promotion_id')
    						->setParameter('promotion_id', $promotion_id)
    					->andWhere('sp.year = :year')
    						->setParameter('year', $year)
    					->getQuery()
    					->getResult();
    	}

    Je voudrais faire l'équivalent d'un rightJoin entre 'm' (Mark) et 'tus', puis 'm' et 'sp. J'ai bien essayé d'inversé les 2 entités dans le leftJoin mais il me dit :

    Error: Class 'tus' is not defined.


    Merci de votre aide :)

    -
    Edité par Imm0 1 mars 2014 à 23:28:45

    • Partager sur Facebook
    • Partager sur Twitter
      3 mars 2014 à 13:00:54

      Salut !   Il n'y a pas de possibilité de faire de RIGHT JOIN avec Doctrine. Simplement parce que tu ne peux pas faire null->getQuelqueChose(), soit récupérer les QuelqueChose liés au truc qui n'existe pas. Essaie de voir pour aller dans l'autre sens et utiliser ainsi un LEFT JOIN, ou alors des sous-requêtes et un (NOT) IN …

      -
      Edité par Ymox 3 mars 2014 à 13:01:35

      • Partager sur Facebook
      • Partager sur Twitter

      [Symfony2] Faire un rightJoin ?

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown