尝试先按最新日期,然后按状态订购我的表。状态可以是(新建、审核中、拒绝、关闭),状态是数据库中的枚举字段。
我试了几件事都没有成功。这是我对这个代码最接近的了。我是新来的Laravel,所以不知道如何做到这一点。
$inquiries = Inquiry::all()->sortByDesc('created_at')->sortByDesc('Status')->values();
这就产生了:
-------------------------------------------------------------- | Name | Created At | Status | -------------------------------------------------------------- | Richard | 05/02/2020 | New | -------------------------------------------------------------- | James | 05/02/2020 | New | -------------------------------------------------------------- | Christine | 04/16/2020 | Declined | -------------------------------------------------------------- | Charles | 04/14/2020 | New | -------------------------------------------------------------- | Judy | 03/13/2020 | In Review | -------------------------------------------------------------- | Paul | 01/12/2020 | New | --------------------------------------------------------------
我希望它看起来像这样,按日期排序,首先是最新的日期,然后是状态="New"。我希望它看起来像这样:
-------------------------------------------------------------- | Name | Created At | Status | -------------------------------------------------------------- | Richard | 05/02/2020 | New | -------------------------------------------------------------- | James | 05/02/2020 | New | -------------------------------------------------------------- | Charles | 04/14/2020 | New | -------------------------------------------------------------- | Paul | 01/12/2020 | New | -------------------------------------------------------------- | Christine | 04/16/2020 | Declined | -------------------------------------------------------------- | Judy | 03/13/2020 | In Review | --------------------------------------------------------------
您可以通过集合上的函数将函数传递给sortBy,从而指定应使用哪个值进行排序。这样,还可以组合两个值进行排序。
Inquiry::all()->sortBy(function ($inquiry) {
return sprintf('%s%s', $inquiry->created_at, $inquiry->status);
})->values();
你可以在这里读到更多:https://laravel.com/docs/collections#method-sortby
首先,让我们看看是否需要使用orderBy()
或sortByDesc()
。
sortBy()/sortByDesc()
方法sortBy()
和sortByDesc()
用于在从数据库获取结果后对数据进行排序。
orderBy()
方法orderBy
与SQLORDER BY
语句相同。这将对数据库记录进行排序,然后输出结果。
答案
这里您需要使用orderBy()
而不是sortByDesc()
。这几乎是一个重复的问题,在这里找到原始问题。
php prettyprint-override">// Make sure column names are correct
$inquiries = Inquiry::orderBy('status', 'ASC')
->orderBy('created_at', 'DESC')
->get();
问题内容: 当我想在MySQL查询中定义自定义排序顺序时,可以执行以下操作: 雄辩的ORM版本是什么? 更新: 这是解决方案,在不同领域订购时也可以使用: 问题答案: 使用其中之一或直接使用应该可以:
我有两种型号: 产品,它有字段 库存,具有产品标识和数量字段 我想按排序字段(ASC)获取订购的产品,但库存量等于0的产品需要位于列表的末尾。 例如。 产品介绍 股票 预期列表(产品ID)-4、1、2、3 我已经为我需要做的事情编写了SQL查询。 有没有一种方法可以使用雄辩模型的作用域来获得此类列表? 使现代化 解决方案。
问题内容: 我想通过表达式从表中获取所有行: 但是,如果该列包含日期时间,可以这样说: 但是如果我这样做: 它不会排。 我猜这是因为$ date = 2014-07-10,这使MySQL假设它是2014-07-10 00:00:00。 在普通的MySQL中,我会做 使用Laravel的口才相当于什么? 问题答案: Laravel 4+为您提供这些方法:,,(#3946)和(#6879)。 他们为您
我有一个模型,它的
问题内容: 我想按日期订购。 例如 我已经尝试过: 伯,这是行不通的。 我得到这个代替: 你能帮我吗? 问题答案: 如果要按日期排序, 请将其存储为日期而不是字符串。 除非您的日期字符串的格式为,否则它不会按您希望的顺序排序。 数据库可以按原样进行足够的工作,而无需人们加倍努力,因此,您应该尽可能地避免我喜欢的 SQL体操。 将其存储为日期,然后(如果需要)使用日期函数以形式获取它。 这样会比您尝
问题内容: 我知道这一定是相对简单的,但是我有一个JSON数据集,我想按日期排序。到目前为止,我无处不在遇到问题。现在,我将日期存储为。如果有帮助,我可以访问jquery,但是我意识到.sort()是本机JS。提前致谢。 问题答案: 假设您有一个javascript对象数组,只需使用自定义排序功能即可: Array 方法使用回调函数对数组进行排序,该回调函数传递给数组中的元素对。 如果返回值为负,