У меня есть 3 таблицы: экзамен, поле и данные.doctrine join with condition
Отношения являются:
экзамен поле manyToMany; field oneToMany данные; ЭКЗАМЕН oneToMany данные
мне нужно указать FIELD_ID И в exam_id, чтобы получить необходимые данные В SQL я это сделать:
SELECT * FROM exam
LEFT JOIN field ON exam.id = field.exam_id
LEFT JOIN data ON field.id = data.field_id AND (data.exam = exam.id)
Это работает
В Учении:
$this->_em->getRepository('FwFollowBundle:Exam')
->createQueryBuilder('exam')
->leftJoin('exam.field', 'field')
->leftJoin('field.data', 'data', 'WITH', 'data.exam = exam')
->select ('exam', 'field', 'data')
Результат не фильтруется условием «WITH».
Я хочу, чтобы вернуть все экзамены с их полями и, если они есть, их данные
Я кто-то знают, почему. Thx
EDIT 1: Я сделал некоторые дамп, чтобы попытаться нашел проблему. В моем проекте у меня есть шаг между экзаменом и полем. Я делаю это
$this->_em->getRepository('FwFollowBundle:Exam')
->createQueryBuilder('exam')
->leftJoin('exam.score', 'score')
->leftJoin('score.fields', 'field')
->leftJoin('field.data', 'data', 'WITH', 'data.exam = exam')
->select ('exam', 'score', 'field', 'data')
Для 2 экзаменов у меня есть одни и те же результаты, так что один и то же поле. У меня только различия с данными. Это тот же экземпляр объекта Field для двух экзаменов. Вот почему у меня нет требуемых данных.
Thx, но с вашим запросом я не имею ничего взамен – lala
Мой ответ был коротким sorry.With вашего запроса, только экзамен с данными был возвратом. Мне нужно вернуть все экзамены с их полями и, если они есть, данные – lala