尝试先按最新日期排序,然后按状态排序。状态可以是(New、In Review、Declined、Closed(,状态是数据库中的枚举字段。
我试过好几次都没有成功。这是我得到的最接近此代码的代码。我是拉拉维尔的新手,所以不知道该怎么做。
$inquiries = Inquiry::all()->sortByDesc('created_at')->sortByDesc('Status')->values();
这就产生了:
--------------------------------------------------------------|名称|创建时间|状态|--------------------------------------------------------------|Richard | 2020年2月5日|新增|--------------------------------------------------------------|James | 2020年2月5日|新增|--------------------------------------------------------------|Christine | 2020年4月16日|拒绝|--------------------------------------------------------------|Charles | 2020年4月14日|新增|--------------------------------------------------------------|Judy | 2020年3月13日|评论中|--------------------------------------------------------------|Paul | 2020年12月1日|新增|--------------------------------------------------------------
我希望它看起来像这样,按日期排序,首先是最新的日期,然后是status="New"。我希望它看起来像这样:
--------------------------------------------------------------|名称|创建时间|状态|--------------------------------------------------------------|Richard | 2020年2月5日|新增|--------------------------------------------------------------|James | 2020年2月5日|新增|--------------------------------------------------------------|Charles | 2020年4月14日|新增|--------------------------------------------------------------|Paul | 2020年12月1日|新增|--------------------------------------------------------------|Christine | 2020年4月16日|拒绝|--------------------------------------------------------------|Judy | 2020年3月13日|评论中|--------------------------------------------------------------
首先让我们看看您需要使用orderBy()
还是sortByDesc()
。
sortByDes((/
sortBy()
和sortByDesc()
用于在从数据库获取结果之后对数据进行排序。
orderBy((
方法orderBy
与SQLORDER BY
语句相同。这将对数据库记录进行排序,然后输出结果。
回答
这里需要使用orderBy()
而不是sortByDesc()
。这几乎是一个重复的问题,在这里找到原件。
// Make sure column names are correct
$inquiries = Inquiry::orderBy('status', 'ASC') // or DESC
->orderBy('created_at', 'DESC')
->get();
您可以将函数传递给集合上的sortBy
函数,从而指定应使用哪个值进行排序。通过这种方式,您还可以组合两个值进行排序。
Inquiry::all()->sortBy(function ($inquiry) {
return sprintf('%s%s', $inquiry->created_at, $inquiry->status);
})->values();
您可以在此处阅读更多信息:https://laravel.com/docs/collections#method-分拣