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();