Я сейчас работаю в проекте, который использует 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, изменив:
Из приложений a0_, миссии m2_
до:
FROM (Applications a0_, Missions m2_)
Работает! ОДНАКО я не знаю, как добавить эти скобки в код DQL (я пытался, но это не удается).
Так что, возможно, это ошибка, и Doctrine 2 должна вставлять скобки, когда у вас есть более одного предложения FROM, или, может быть, я ошибаюсь?