Я довольно новичок в Doctrine ORM и пытаюсь преобразовать необработанный запрос SQL с помощью doctrine, чтобы получить массив сущностей.
По сути, я хочу получить один из подробнее course
объекты, в которых пользователь зарегистрирован косвенно. Идентификатор course
находится в таблице traineeship
. Идентификатор traineeship
и идентификатор user
находятся в таблице registration
.
Вот мой SQL запрос:
SELECT * FROM course c
LEFT JOIN traineeship t
ON c.id = t.courseId
LEFT JOIN registration r
ON t.id = r.traineeshipId
WHERE r.userId = 2681;
Вот что я пытаюсь сделать с doctrine:
return $this->createQueryBuilder('c')
->andWhere('t.course = c')
->leftJoin('c.traineeships', 't')
->andWhere('r.traineeship = t')
->leftJoin('t.registrations', 'r')
->andWhere('r.id = :user')
->setParameter('user', $user)
->getQuery()
->execute();
С моим необработанным SQL запросом, Я получаю два ожидаемых результата с заданным идентификатором. Сгенерированный запрос по doctrine, я получаю только один результат. Поэтому я предполагаю, что мое doctrine использование плохо.
(Doctrine отношения:
Курс OneToMany Стажировка
Стажировка OneToMany Регистрация
Регистрация ManyToOne Пользователь)