我的按日期分组查询工作不正常。我总是得到最后几天和接下来的几天,但我只想要即将到来的

My query for grouping by date isn't working correctly. I'm always getting the last AND next few days, but I only want the upcoming ones

我正在尝试按日期对我的会议进行分组,这样我就可以得到今天和接下来三个工作日的会议。但这不是很好。我总是在接下来的几天 AND 最后一天 但我不想这样。

$grouped_meetings = Meeting::whereBetween('date', [Carbon::yesterday()->toDate(), now()->addDays($days_to_add)])->orderBy('date')->get()->groupBy(function ($val){
            return Carbon::parse($val->date)->format('l');
});

我认为它的工作原理就像选择昨天和我在代码中指定的那一天之间的日期。但它也总是返回 昨天 的会议。

我尝试将 Carbon::yesterday()->toDate() 更改为 Carbon::now()->toDate() 甚至 now() 但后来我 错过了 current天.

我完全不知道为什么会这样,我也不知道如何解决这个问题。

编辑: date 的值始终是 YYYY-MM-DD.

格式的值

如果您现在使用碳,它将包括时间。例如 2019-07-24 12:34:26

如果您昨天使用碳,它将是昨天 00:00。例如 2019-07-23 00:00:00

所以你现在需要使用 Carbon 并将时间戳设置为一天的开始,即 00:00:00.

或者另一种方法是您可以在昨天使用碳并添加一天

(代表问题作者发布解决方案).

$grouped_meetings = Meeting::whereBetween('date', [Carbon::now()->startOfDay()->toDate(), now()->addDays($days_to_add)])->orderBy('date')->get()->groupBy(function ($val){
            return Carbon::parse($val->date)->format('l');
        });

startOfDay() 结合 Carbon::now() 解决了这个问题。