Doctrine 2 查询生成器 abs 函数

Doctrine 2 Query Builder abs Function(Doctrine 2 查询生成器 abs 函数)
本文介绍了Doctrine 2 查询生成器 abs 函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这项工作:

    $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 仅适用于声明的选定部分,并且不要按部分订购.

The native doctrine function abs work only on a select part of statment and don't work on order by part.

观察:

1-) 我避免使用 NativeQuery.

1-) Im avoiding to use NativeQuery.

2-) u.code 是 mysql 上的 varchar 字段,需要是 varchar(有时是数字,有时是字符串),我需要像数字一样排序.

2-) u.code is a varchar fild on mysql and need to be varchar ( some times numeric and some times string), and i need to order then like a number in numeric case.

有什么帮助吗?

推荐答案

解决了 atmaThank 的 abs() 确实不能直接在 orderBy 中工作,而是作为别名.

Solved atma thank's abs() realy doesn't work directly in orderBy but as an alias.

解决方案

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

Obs:这是一个原则限制,而不是 mysql 限制,mysql 支持 abs 直接按部分订购.

Obs: It's a doctrine limitation, not a mysql limitation, mysql suports abs direct on order by part.

这篇关于Doctrine 2 查询生成器 abs 函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Convert JSON integers and floats to strings(将JSON整数和浮点数转换为字符串)
in php how do I use preg replace to turn a url into a tinyurl(在php中,如何使用preg替换将URL转换为TinyURL)
all day appointment for ics calendar file wont work(ICS日历文件的全天约会不起作用)
trim function is giving unexpected values php(Trim函数提供了意外的值php)
Basic PDO connection to MySQL(到MySQL的基本PDO连接)
PHP number_format returns 1.00(Php number_Format返回1.00)