Laravel使用Eloquent ORM查询时多字段排序

查询时 数据列表 可能是根据两个字段的不同情况进行排序

比如:数据库的两个字段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排序;

你可能感兴趣的:(Laravel使用Eloquent ORM查询时多字段排序)