Arrays 按日期和时间对集合排序
我有一个laravel系列,外观如下:Arrays 按日期和时间对集合排序,arrays,laravel,sorting,object,Arrays,Laravel,Sorting,Object,我有一个laravel系列,外观如下: $data::where('name','xyz')->get(); //Returns {"id":"1" , "date":"11.11.2011"...} {"id":"2","date":"12.11.2011"...} 我现在想要的是:按日期和时间对这些条目进行排序 因此,每个日期都有多个条目。 因此,我考虑将每个具有相同日期的条目拆分为一个数组,对它们进行排序,然后合并它们。 但我根本无法让它工作。我现在可以在这里发布一些代码,但这完全
$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>';
所以这很好。但是我如何按第二个键排序,在我的例子中是“deptime”,它返回时分秒?
因此,第一次按日期订购,已完成。现在,在不重新安排日期的情况下(同一天除外),按时间订购这一款。
我的意思是,我也可以更新我的表格,这样我就有了2019-11-09 17:24:00的日期。有什么想法吗?看看这个示例,它允许回调来确定顺序:
$sorted=$collection->sortBy(函数($product,$key){
退货数量($product['colors']);
});
在您的情况下,您将比较每一行的日期和时间,从而生成一个新的排序集合。从数组中生成一些记录并显示预期的时间result@Coderz9没有提到时间。“date”属性是timestamp吗?我想我让它工作了,deptime是它自己字段中的时间。我现在明白了:$sorted=Data::where('pic','HST')->或where('pic','BAL')->orderBy('date','asc')->orderBy('deptime','asc')->get();它返回了正确的结果,我担心即使它还没有发生,第二个orderby也会覆盖第一个。您认为如何?转储此请求的sql以确保“date asc”位于“deptime asc”之前。在SQL中,第一个order by优先于第二个order by,依此类推。如果“日期asc”排在第一位,那么它应该优先于“deptime asc”。
string(10) "2019-11-08"
string(10) "2019-11-08"
string(10) "2019-11-08"
string(10) "2019-11-09"