Доктрина 2 и "неизвестный столбец в" предложении ON "
В настоящее время я работаю в проекте, который использует Doctrine 2 с ZF. Все идет нормально. Однако у меня есть проблема, которая выглядит как ошибка.
Я написал следующий код в одном из моих репозиториев:
$dql = 'SELECT a, s.firstName, s.lastName FROM Model_Application a, Model_Mission m
JOIN a.student s WHERE a.mission = m.id AND m.company = :company';
$result = $this->getEntityManager()->createQuery($dql)
->setParameter('company', $company)
->getResult();
Был сгенерирован следующий SQL:
SELECT a0_.coverLetter AS coverLetter0, [... lot of useless things],
a0_.student_id AS student_id5, a0_.mission_id AS mission_id6
FROM Applications a0_, Missions m2_ INNER JOIN Students s3_
ON a0_.student_id = s3_.id LEFT JOIN Users u1_ ON s3_.id = u1_.id
WHERE a0_.mission_id = m2_.id AND m2_.company_id = ?
Однако я всегда получаю "Неизвестный столбец a0_.student_id в предложении ON", НО столбец student_id действительно существует в таблице Applications.
Я немного погуглил и нашел эту ссылку http://www.oscommerce-fr.info/faq/qa_info.php?qID=198 (извините, по-французски), в которой говорится, что после MySQL 5.0.12 парсер изменился и что Вы должны добавить круглые скобки, когда у вас есть несколько предложений FROM (это мой случай).
Если я переписываю код SQL, изменяя: FROM Applications a0_, Missions m2_
к:
FROM (Applications a0_, Missions m2_)
Оно работает! ОДНАКО я не знаю, как добавить эти скобки в код DQL (я пытался, но это не удается).
Так что, возможно, это ошибка, и Doctrine 2 должна вставлять круглые скобки всякий раз, когда у вас есть более одного предложения FROM, или, может быть, я ошибаюсь?
1 ответ
Окей, решите благодаря этой ссылке: http://www.doctrine-project.org/jira/browse/DDC-1047
Ключ должен изменить порядок DQL:
$dql = 'SELECT a, s FROM Model_Application a JOIN a.student s, Model_Mission m
WHERE a.mission = m.id AND m.company = :company';