【发布时间】:2019-03-08 07:28:44
【问题描述】:
我正在使用 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 发送通知。我想在一个雄辩的查询中做到这一点,但不确定如何按天和小时“惰性匹配”。如果我有一个带有start_date 时间戳的Appointment 模型,我知道我可以按天或日期进行精确匹配,但我想找到不考虑小时/秒的匹配。我正在考虑这些方面的事情:
$oneDayAppointments = Appointment::whereDay(
'start_date',
Carbon::now()->addDay()->day
)->get();
...如果 start_date 是从现在开始的一天,我会得到任何约会。现在我将如何将它磨练到一天和一小时。如果我只使用 where 子句:
$oneDayAppointments = Appointment::where(
'start_date',
Carbon::now()->addHours(24)
)->get();
...我可以得到完全匹配,但前提是分钟/秒也是匹配的。谢谢!
【问题讨论】:
-
您需要在查询之前使用日期对象以获取当前日期时间,但删除分钟和秒并添加一天。一旦有了这个日期,您就需要创建一个“到”日期时间,即该日期到小时 + 1 小时 - 1 秒。一旦有了这两个日期时间,就可以在 eloquent 查询中使用 whereBetween
标签: laravel laravel-5 eloquent laravel-5.4 php-carbon