【问题标题】:Eloquent sortBy date of datetime attribute format雄辩的 sortBy datetime 属性格式的日期
【发布时间】:2019-01-31 14:41:42
【问题描述】:

我有一个模型,其中包含一个数据时间格式的属性,我想按此属性对我的集合进行排序,但我不想考虑小时和分钟,只考虑日期,因为我想达到第二个按距离过滤。我处于无法更改迁移的情况,因为正在处理大量事件(+20.000)。 我会很感激任何帮助,谢谢。

这是正在处理的解释示例。

这里是我按 date_end 和距离处理过滤器的地方:

elseif($data['date'] == true ) {
            $result = $result->sortBy(function($item) {
            return [$item['date_end'], $item['distance_km']];
            });

这是实际结果:

date_end                     distance
                        |
12/12/2018 15:30        | 107 km
12/12/1018 17:00        | 105 km
01/01/2019 11:45        | 125 km
01/01/2019 12:30        | 120 km

这就是我们所期待的:

date_end                     distance
                          |
12/12/2018 (17:00)        | 105 km
12/12/1018 (15:30)        | 107 km
01/01/2019 (12:30)        | 120 km
01/01/2019 (11:45)        | 125 km 

【问题讨论】:

    标签: sql database laravel eloquent


    【解决方案1】:

    您可以将其解析为 Carbon 实例并仅按日期对其进行排序。

    $result = $result->sortBy(function ($item) {
        return [Carbon\Carbon::parse($item['date_end'])->toDateString(), $item['distance_km']];
    });
    

    【讨论】:

    • 谢谢哥们,我不知道为什么我想了这么远,在解析了所需的格式 Carbon::parse($item['date_end'])->format('d /m/Y')。再次感谢您,祝您有美好的一天:D
    • 谢谢,如果这个答案对你有帮助,请考虑将其投票/标记为正确的答案:)
    猜你喜欢
    • 2018-05-12
    • 1970-01-01
    • 2019-08-10
    • 2017-10-31
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多