首页 > 解决方案 > 星期天的碳开始和星期六的 endOfWeek 不工作

问题描述

我需要选择一个特定的用户每周最高分。我正在使用 Carbon,我强迫 Carbon startofWeek 到 SUNDAY 和 endOfWeek 到 SATURDAY。

这是我的数据库数据

id  user_id score   created_at            updated_at
43  33      88      2020-02-23 00:00:00     NULL
44  33      15      2020-02-24 00:00:00     NULL
45  33      42      2020-02-24 00:00:00     NULL
46  33      86      2020-02-25 00:00:00     NULL
47  33      100     2020-02-04 00:00:00     NULL 

这是我的代码

     $week = GameScore::select(max('score')
             ->where('created_at', '>=', Carbon::now()->startOfWeek(Carbon::SUNDAY))
             ->where('created_at', '<=', Carbon::now()->endOfWeek(Carbon::SATURDAY))
             ->where('user_id', $user->id)
            ->get();

根据我的数据,我需要得到 88 分作为结果,因为这个分数是在 2 月 23 日星期日获得的,这是本周开始的,直到今天所有其他分数都不高于这个分数。

标签: laravelphp-carbon

解决方案


在您的代码中,您需要在比较时指定日期格式,

Carbon::now()->endOfWeek(Carbon::SATURDAY)->format('Y-m-d H:i:s');

推荐阅读