ThinkPHP5 中 order 排序使用 SQL 函数提示不支持的表达式的解决方案

admin 阅读:20 2024-03-01

ThinkPHP 5.0 升级到最新的 5.0.24 版本后,程序报错,经检查是 order 排序报错:不支持的表达式。错误代码如下:

$users = $exam->users()->where('user_id','in',$uids)->order('(score+rapscore+rescore)','desc')->select();

而未升级之前,上述代码是可以正常运行的,因此查看了下官方的版本升级说明,手册中有一句说明:

V5.0.17+版本开始,当你的order排序中使用了SQL函数的时候,请使用orderRaw方法替代order,例如:

因此将上述代码改为以下方式即可:

$users = $exam->users()->where('user_id','in',$uids)->orderRaw('(score+rapscore+rescore) desc')->select();
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!