2017-01-08 5 views
2

Так что у меня этот запрос:Laravel результатов не возвращаются при работе с полем даты и времени

Report::whereDate('date', '=', Carbon::now()->format('Y-m-d H:i'))->get(); 

Даты хранятся как это, например:

2017-01-08 10:00:00 

Но я никогда не получить никаких результатов, это имеет что-то делать с секундами? Если да, то как я могу избежать этого и получить результаты? Использовать мутатор, возможно, игнорировать секунды?

PS. Я хочу получить результаты с указанного времени, потому что я использую его для запланированной задачи (команды). Электронные письма следует направлять в определенное время, и времена меняются :)

+1

Вы, вероятно, хотите, чтобы указать диапазон моментов ваша дата должна быть. В этом случае, между 0:00 сегодня и 23:59 сегодня. –

+0

Удалите время и попробуйте. 'whereDate ('date', '=', Carbon :: now() -> format ('Ym-d'))' –

+0

Возможно, я должен был упомянуть, что часть времени очень важна, извините :) – Hardist

ответ

1

Вы можете попробовать с WhereRaw

$format = Carbon::now()->format('Y-m-d H:i'); 
Report::whereRaw("date_format(date, '%Y-%m-%d %H:%i ') = '$format'") 
+0

Спасибо, дадим это попробовать :) – Hardist

+0

Получил его на работу, мне нужно было только время, поэтому я изменил его на 'time_format', и он сработал. Большое спасибо :) – Hardist

0

Добавить date в $dates недвижимость в Report модели:

protected $dates = ['date']; 

Вы сказали, что вы хотите, чтобы проверить время, так что просто сделать это :

Report::where('date', Carbon::now())->get(); 
+0

Я, наверное, должен был упомянуть, что часть времени очень важна, извините :) Я добавил дату уже к массиву '$ dates', спасибо :) – Hardist

+0

Я отредактирую свой вопрос, чтобы сделать его более понятным, что я хочу, извинения – Hardist

0

я понял это, я не хочу использовать логическое значение в моей базе данных, чтобы проверить погоду или нет электронной почта была отправлена ​​для конкретного отчета, поскольку они являются ежедневными отчетами. Но я сделаю еще одно задание cron, чтобы сбросить эти булевы в конце дня.

-1

Наверное, я неправильно понял вопрос.

Удобный способ совпадения даты с использованием Carbon.

В вашей модели добавьте следующую строку.

protected dates = ['date']; 

Делая, что ваши даты будут сохранены как экземпляр Carbon.

Теперь вы можете сделать

Report::whereDate('date', Carbon::now())->get(); 
+1

Взгляните на http://laraveldaily.com/eloquent- date-filtering-wheredate-and-other-methods/ –