2014-01-02 2 views
0

Мне нужно получить всех родителей всех учащихся, которые зачислены на начальную школу. Моя модель ER:Как выполнить этот запрос

enter image description here Названия таблиц находятся на испанском языке. Переводы:

  • Ответственный == родитель.
  • alumno == student.
  • tutelado == - отношение N: N между родителем и учеником.
  • Градо == класс или курс (я не знаю, правильный перевод)
  • Nivel == это школа уровень (Kinder, Elementary (первичный в Аргентине), средний, высокий и т.д. ...)

я построить этот запрос с QuerBuilder (внутри Responsable хранилища):

$qb = $this->createQueryBuilder('r'); 
$qb->innerJoin('r.tutelados', 't') 
    ->innerJoin('t.alumno', 'a') 
    ->innerJoin('a.grado', 'g') 
    ->where('g.nivel = :Nivel') 
    ->setParameter('Nivel', $unNivel); 

Это сырье SQL:

SELECT r0_.iduser AS iduser0, r0_.iduser AS iduser1 
FROM responsable r0_ 
INNER JOIN tutelado t1_ ON r0_.iduser = t1_.responsable 
INNER JOIN alumno a2_ ON t1_.alumno = a2_.iduser 
INNER JOIN grado g3_ ON a2_.grado = g3_.idgrado 
WHERE g3_.nivel = 'Primario' 

Я выполняю SQL в PhpMyAdmin, а также получаю пустой набор результатов.

Любые идеи?.

ответ

0

Вы могли бы попробовать что-то вроде:

$this->getDoctrine()->getManager()->getRepository('YourBundle:Responsable') 
     ->createQueryBuilder('r') 
     ->join('r.alumnos', 'a') // Check the name of the relation between alumno and responsable 
     ->join('a.grado', 'g') 
     ->join('g.nivel', 'n') 
     ->where('n.nivel = ?1') 
     ->setParameter(1, 'elementary') 
     ->getQuery() 
     ->getResult(); 
+0

Спасибо я попробовать сделать на этом пути. – ramiromd

0

Я забыл присоединиться к "Nivel" стол:

$qb = $this->createQueryBuilder('r'); 
$qb->innerJoin('r.tutelados', 't') 
    ->innerJoin('t.alumno', 'a') 
    ->innerJoin('a.grado', 'g') 
    ->innerJoin('g.nivel', 'n') 
    ->where('n.nivel = :Nivel') 
    ->setParameter('Nivel', $unNivel); 
Смежные вопросы