Laravel / PHP / Carbon анализирует дату от одного до трех дней с этого момента () до часа, без учета минут и секунд - PullRequest
1 голос
/ 08 марта 2019

Я использую 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();

... Я мог бы получить точные совпадения, но только если бы минуты / секунды были также совпадением. Спасибо!

1 Ответ

1 голос
/ 08 марта 2019

Работая над моим комментарием выше, это должно сделать это

$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])

https://laravel.com/docs/5.8/queries

...