这项工作:

    $qb = $this->em->createQueryBuilder();

    $qb->select("abs(u.code) as code")
       ->from("User", "u")
       ->orderBy("code","ASC")
       ->getQuery()
       ->getArrayResult();

这不起作用:
    $qb = $this->em->createQueryBuilder();

    $qb->select("u.code")
       ->from("User", "u")
       ->orderBy("abs(u.code)","ASC")
       ->getQuery()
       ->getArrayResult();

错误:
语法错误]第0行,第118列:错误:应为字符串结尾,得到“(”
本土的教义功能abs只作用于部分陈述和
不要按部分顺序工作。
组织分解结构:
1-)Im避免使用NativeQuery。
2-)u.code是mysql上的一个varchar fild,需要是varchar(有时是数字,有时是字符串),我需要像数字大小写中的数字那样排序。
有什么帮助吗?

最佳答案

解决了atma thank的abs()realy不是直接按orderBy工作,而是作为一个别名。
溶解

SELECT field1,field2,abs(field3) AS abs_field3
FROM table
ORDER BY abs_field3 ASC

Obs:这是一个条令限制,不是mysql限制,mysql支持abs直接按部分顺序。

关于php - Doctrine 2查询生成器ABS函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7532886/

10-13 05:26