按天排序() Doctrine Symfony2
Order By DAY() Doctrine Symfony2
我正在使用 Beberlei DoctrinExtensions Bundle 在 Symfony2 上使用 DAY()、MONTH() 和 YEAR() 进行查询。
一切都适用于选择。但是,当我尝试创建一些 OrderBy 时,出现语法错误。
这是我的代码:
SELECT a FROM AppUserBundle:User a WHERE MONTH(a.dataNascimento) >= MONTH(CURRENT_DATE())
AND DAY(a.dataNascimento) >= DAY(CURRENT_DATE())
ORDER BY DAY(a.dataNascimento)
错误:
[Syntax Error] line 0, col 151: Error: Expected end of string, got '('
没有 ORDER BY 子句查询有效。
有人可以帮助我吗?
我相当确定您不能在 DQL ORDER BY
子句中使用函数(尽管您可以在 SQL 中使用)。解决这个问题的方法是将字段添加到带有 HIDDEN
的 SELECT
子句中,这样 Doctrine 就不会 return 并将结果转换为混合模式。所以你的 DQL 将是:
SELECT a, DAY(a.dataNascimento) AS HIDDEN myday
FROM AppUserBundle:User a
WHERE MONTH(a.dataNascimento) >= MONTH(CURRENT_DATE())
AND DAY(a.dataNascimento) >= DAY(CURRENT_DATE())
ORDER BY myday
Doctrine 从未在其文档中明确说明这一点,但是 DQL page.
中隐藏了一个类似的示例
我正在使用 Beberlei DoctrinExtensions Bundle 在 Symfony2 上使用 DAY()、MONTH() 和 YEAR() 进行查询。
一切都适用于选择。但是,当我尝试创建一些 OrderBy 时,出现语法错误。
这是我的代码:
SELECT a FROM AppUserBundle:User a WHERE MONTH(a.dataNascimento) >= MONTH(CURRENT_DATE())
AND DAY(a.dataNascimento) >= DAY(CURRENT_DATE())
ORDER BY DAY(a.dataNascimento)
错误:
[Syntax Error] line 0, col 151: Error: Expected end of string, got '('
没有 ORDER BY 子句查询有效。
有人可以帮助我吗?
我相当确定您不能在 DQL ORDER BY
子句中使用函数(尽管您可以在 SQL 中使用)。解决这个问题的方法是将字段添加到带有 HIDDEN
的 SELECT
子句中,这样 Doctrine 就不会 return 并将结果转换为混合模式。所以你的 DQL 将是:
SELECT a, DAY(a.dataNascimento) AS HIDDEN myday
FROM AppUserBundle:User a
WHERE MONTH(a.dataNascimento) >= MONTH(CURRENT_DATE())
AND DAY(a.dataNascimento) >= DAY(CURRENT_DATE())
ORDER BY myday
Doctrine 从未在其文档中明确说明这一点,但是 DQL page.
中隐藏了一个类似的示例