我正在使用Laravel 5.4和Carbon来查找正好在laravel作业(到小时)之前一天和三天发送通知的日期。因此,例如,如果日期是2019-03-10 18:00:03
或2019-03-10 18:15:34
,我想明天在2019-03-07 18:00:00
和另一个在2019-03-09 18:00:00
发送通知。我想在一个雄辩的查询中做到这一点,但不确定如何按天和小时“懒惰匹配”。如果我有一个带Appointment
时间戳的start_date
模型,我知道我可以按天或日期进行完全匹配,但我想找到忽略小时/秒的匹配。我正在考虑以下几点:
$oneDayAppointments = Appointment::whereDay(
'start_date',
Carbon::now()->addDay()->day
)->get();
...会给我任何start_date从现在开始的约会。现在我将如何磨练它到白天和小时。如果我只是使用where子句:
$oneDayAppointments = Appointment::where(
'start_date',
Carbon::now()->addHours(24)
)->get();
...我可以获得完全匹配,但前提是分钟/秒也是匹配。谢谢!
在上面的评论中,我们应该这样做
$tomorrowStart = Carbon::createFromFormat('Y-m-d H:i:s', Carbon::now()->addDay()->format('Y-m-d H:00:00'));
$tomorrowEnd = $tomorrowStart->copy()->addHour()->subSecond();
//whereBetween('start_date', [$tomorrowStart, $tomorrowEnd])