我有一个laravel集合,其外观如下:
$data::where('name','xyz')->get();
//Returns {"id":"1" , "date":"11.11.2011"...}
{"id":"2","date":"12.11.2011"...}
现在我要的是:按日期和时间对这些条目进行排序 因此,每个日期有多个条目。 因此,我考虑过将具有相同日期的每个条目拆分为一个数组,对其进行排序,然后将它们合并。 但我根本无法正常工作。我现在可以在这里发布一些代码,但这全都错了,我的想法会误导您。 问题是,条目是对象,我在比较时遇到问题。 任何帮助表示赞赏。
编辑:
基本上我现在感谢@Rafael Renan Pacheco所做的是:
$sorted = $data->sortBy(function ($product, $key) {
return $product->date;
});
echo '<pre>';
foreach($sorted as $sort) {
var_dump($sort->date);
}
echo '</pre>';
结果为:
string(10) "2019-11-08"
string(10) "2019-11-08"
string(10) "2019-11-08"
string(10) "2019-11-09"
这很好。但是,如何按第二个键排序(在我的情况下为“ deptime”,该键返回小时分和秒)? 因此,首先按日期订购,完成。现在,按时间排序该日期,而不重新安排日期(当天除外)。 我的意思是我也可以更新我的桌子,这样我可以与2019-11-09 17:24:00约会。有什么想法吗?
答案 0 :(得分:1)
看一下Laravel documentation中的示例,该示例允许回调确定顺序:
$sorted = $collection->sortBy(function ($product, $key) {
return count($product['colors']);
});
在您的情况下,您将比较每一行的日期和时间,从而得到一个新的排序集合。