Laravel `-> whereDate` не включает сегодня - PullRequest
1 голос
/ 25 марта 2020

Laravel ->whereDate не включает сегодня.

У меня есть 2 столбца datetime в моей БД (начало и конец). Я использую это для запроса

$result = BlaModel::where('status', '=', "bla")
                    ->whereDate('start', '<=', $date)
                    ->whereDate('end', '>', $date)
                    ->get();

Переменная $date является строкой 2020-03-25 11:23:09, и у меня есть запись в моей базе данных с

start - 2020-03-18 10:44:00
end - 2020-03-25 20:59:00

Вопрос: Почему этот запрос делает не получить эту запись. Любой совет будет полезен. Спасибо.

Ответы [ 2 ]

3 голосов
/ 25 марта 2020

Потому что whereDate изменится на raw sql с mysql встроенным методом DATE():

select *
from `blas`
where date(`start`) <= '2020-03-25 11:23:09'
and date(`end`) > '2020-03-25 11:23:09'

То есть date(2020-03-25 20:59:00) => 2020-03-25, что меньше '2020-03-25 11:23: 09 '.

Вы можете изменить свой код на

$result = BlaModel::where('status', '=', "bla")
                    ->where('start', '<=', $date)
                    ->where('end', '>', $date)
                    ->get();
1 голос
/ 25 марта 2020

Попробуйте это

Если вы хотите использовать WhereDate, напишите ваш запрос как.

$result = BlaModel::where('status', '=', "bla")
                    ->whereDate('start', '<=', \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', '2020-03-18 10:44:00')->format('Y-m-d'))
                    ->whereDate('end', '>',\Carbon\Carbon::createFromFormat('Y-m-d H:i:s', '2020-03-25 20:59:00')->format('Y-m-d'))
                    ->get();

Или используйте Simple Where как

$result = BlaModel::where('status', '=', "bla")
                    ->where('start', '<=', $date)
                    ->where('end', '>', $date)
                    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...