在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)"} []
DQL仅了解几个标准sql函数(coalesce例如)。为了能够使用您的自定义函数,您需要注册它并告诉doctrine如何将其转换为原始sql。请遵循以下指南:
DQL
coalesce
doctrine
Symfony文档
学说
并在这里检查我的答案