按日期和时间对集合进行排序

时间:2019-11-20 13:44:30

标签: arrays laravel sorting object

我有一个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约会。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

看一下Laravel documentation中的示例,该示例允许回调确定顺序:

$sorted = $collection->sortBy(function ($product, $key) {
    return count($product['colors']);
});

在您的情况下,您将比较每一行的日期和时间,从而得到一个新的排序集合。