在Symfony中,当我在MySQL中使用带有DATE函数的以下查询时,会出现错误。
SELECT employer.companyName AS employerName, jobs.jobId, jobs.industryId,
jobs.focusId, jobs.companyName, jobs.employerId, jobs.jobTitle, DATE(jobs.createdDate) AS
createdDate , DATE(jobs.endDate) AS endDate , jobs.replyTo, jobs.featured , jobs.jobType,
jobs.status FROM Acme\\AppsBundle\\Entity\\Jobs jobs , Acme\\AppsBundle\\Entity\\Employer
employer WHERE jobs.employerId = employer.employerId GROUP BY jobs.jobId ORDER BY
jobs.jobId DESC
为什么会出现这种情况,有什么解决方法可以克服这种情况,在数据库中,这些字段即 end_date 存储为 mysql 类型“date”
[2014-09-17 05:52:42] request.CRITICAL: Uncaught PHP Exception Doctrine\ORM\Query
\QueryException: "[Syntax Error] line 0, col 138: Error: Expected known function, got
'DATE'" at /.../Doctrine/ORM/Query/QueryException.php line 52 {"exception":"[object]
(Doctrine\\ORM\\Query\\QueryException: [Syntax Error] line 0, col 138: Error: Expected known function, got 'DATE' at /var/w.../doctrine/orm/lib/Doctrine/ORM/Query
/QueryException.php:52, Doctrine\\ORM\\Query\\QueryException: SELECT employer.companyName
AS employerName, jobs.jobId, jobs.industryId, jobs.focusId, jobs.companyName, jobs.employerId, jobs.jobTitle, DATE(jobs.createdDate) AS createdDate , DATE(jobs.endDate)
AS endDate , jobs.replyTo, jobs.featured , jobs.jobType, jobs.status FROM Acme\\AppsBundle
\\Entity\\Jobs jobs , Acme\\AppsBundle\\Entity\\Employer employer WHERE jobs.employerId
= employer.employerId GROUP BY jobs.jobId ORDER BY jobs.jobId DESC at /var/w...
/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php:41)"} []
entity_managers: default:
放在DQL之前时,它就可以工作了。 - Michael Millardoctrine.orm.dql
是doctrine.orm.entity_managers.default.dql
的简写。您之前的配置中是否提到了 entity_managers? - qooplmaoentity_managers
已经在我的config.yml
中位于orm
之下,所以我认为这就是为什么doctrine.orm.dql
不起作用但doctrine.orm.dql
起作用的原因。好知道。 - Michael Millar