查询时 数据列表 可能是根据两个字段的不同情况进行排序
比如:数据库的两个字段status(状态)、created_at(创建时间)
status = 1/2/3/4/5/6/7/8;
created_at 就是正常的时间格式
现在的排序方案是,如果状态时1的排在最前并且按时间倒叙,其他状态只按时间倒叙。
代码:
$offlineOrder=\App\OfflineOrder::where([]);
//这里是如果status=1则sort_status=1;否则sort_status=0
$offlineOrder->select(\DB::raw("*,(CASE WHEN (status = 1) THEN '1' ELSE '0' END) as sort_status"));
//这样sort_status其实只有0/1;按倒叙就是所有为1的排前面 并按时间倒叙
return$offlineOrder->orderBy('sort_status','desc')->orderBy('created_at','desc');
还有一种情况是一个字段可能为空
->orderBy(\DB::raw('ISNULL(number)'),'desc')
//这样如果number为空 则返回1,不为空则返回0 ;其实就是按1/0排序;