【问题标题】:Doctrine 2 and "unknown column in "ON clause"教义 2 和“ON 子句中的未知列”
【发布时间】:2011-11-14 18:05:52
【问题描述】:

我目前正在一个项目中使用 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 = ?

但是,我总是得到一个“ON 子句中的未知列 a0_.student_id”,但学生 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 代码中添加这些括号(我尝试过,但失败了)。

所以也许这是一个错误,当你有多个 FROM 子句时,Doctrine 2 应该插入括号,或者我错了?

【问题讨论】:

    标签: doctrine doctrine-orm clause on-clause


    【解决方案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';
    

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 2013-01-26
      相关资源
      最近更新 更多