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