2012-03-25 3 views
1

У меня есть запрос с двумя отношениями MTM:доктрина 2 множественных присоединиться в одном запросе дать мне ошибку

 $em = $this->getEntityManager(); 

     $qb = $em->createQueryBuilder(); 
     $qb 
      ->select('o') 
      ->from('UserBundle:User', 'o') 
      ; 

     $qb->join('o.organisations', 'org') 
      ->where('org.id = :organisation') 
      ->setParameter('organisation', $filterData['organisation']) 
     ; 
     $qb 
      ->join('o.scientificDirections', 'd') 
      ->where('d.id IN (:directionIds)') 
      ->setParameter('directionIds', $directionIds) 
      ->orderBy('o.surname') 
      ; 
     return $qb->getQuery(); 

Но это дает мне ошибку: Неверный номер параметр: число связанных переменных не соответствует количеству жетонов. Может кто-нибудь объяснить мне, что не так? связь в модели пользователя:

/** 
* @ORM\ManyToMany(targetEntity="\StrangeBundle\Entity\ScientificDirection") 
* 
*/ 
protected $scientificDirections; 

/** 
* @ORM\ManyToMany(targetEntity="\StrangeBundle\Entity\Organisation", mappedBy="workers") 
*/ 
protected $organisations; 

ответ

3

Я думаю, что причина в том, что вы использовали where дважды. Это перезаписывает первое, где, и именно поэтому оно дает вам ошибку номера параметра.

Использование andWhere

Смежные вопросы