Doctrine 第2条和;“中的未知列”;关于第条;

Doctrine 第2条和;“中的未知列”;关于第条;,doctrine,doctrine-orm,clause,on-clause,Doctrine,Doctrine Orm,Clause,On Clause,我目前在一个项目中工作,该项目使用了ZF的条令2。到现在为止,一直都还不错。然而,我有一个问题,看起来像一个错误 我在我的一个存储库中编写了以下代码: $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 = $th

我目前在一个项目中工作,该项目使用了ZF的条令2。到现在为止,一直都还不错。然而,我有一个问题,看起来像一个错误

我在我的一个存储库中编写了以下代码:

$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 = ?
但是,我总是在ON子句中得到一个“未知列a0_u.student_uid”,但是这个student_uid列确实存在于Applications表中

我在谷歌上搜索了一下,发现了这个链接(很抱歉,它是法语的),上面说在MySQL 5.0.12之后,解析器发生了变化,当您有几个FROM子句时,您必须添加括号(这是我的情况)

如果我通过更改以下内容重写SQL代码: 来自应用程序a0_2;,m2_

致:

它起作用了!然而,我不知道如何在DQL代码中添加这些括号(我尝试过,但失败了)


所以,可能这是一个错误,原则2应该在有多个FROM子句时插入括号,或者可能我错了?

好的,请通过以下链接解决:

关键是对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';
$dql = 'SELECT a, s FROM Model_Application a JOIN a.student s, Model_Mission m
        WHERE a.mission = m.id AND m.company = :company';