В моей базе данных 4 студента:
1st Student's created_at = 2016-05-12 02:23:51
2nd Student's created_at = 2016-05-27 07:37:45
3rd Student's created_at = 2016-05-29 07:40:29
4th Student's created_at = 2016-05-29 07:50:05
Почему мой код возвращает только первого ученика?
$students = Student::select('id as ID_NO', 'fname as Firstname', 'lname as Lastname', 'created_at') ->whereBetween('created_at', [Carbon::createFromDate(2016, 5, 12)->toDateString(), Carbon::createFromDate(2016, 5, 27)->toDateString()])
1-й и 2-й ученики должны быть возвращены. Является ли «до» частью включительно в whereBetween или что-то не так с моим кодом?
Мне нужна твоя помощь. Заранее спасибо!
Вам необходимо отформатировать файл created_at
в формате Ymd
. См. Изменение:
$students = Student::select('id as ID_NO', 'fname as Firstname', 'lname as Lastname', 'created_at') ->whereBetween(DB::raw('date(created_at)'), [Carbon::createFromDate(2016, 5, 12)->toDateString(), Carbon::createFromDate(2016, 5, 27)->toDateString()])
Для других, кто в конечном итоге здесь и хочет ответа на заданный вопрос (в случае, если он обновлен … «Есть ли в Laravel включительно?»):
Да.
Поиск Laravel between
означает, что он будет получать все строки между 2016-05-12 00:00:00
и 2016-05-27 00:00:00
. Ваш второй пользователь создан в 2016-05-27 07:37:45
, это вне диапазона, поэтому Laravel его не получит.
Используйте это и попробуйте, если это работает:
$students = Student::select('id as ID_NO', 'fname as Firstname', 'lname as Lastname', 'created_at') ->whereBetween('created_at', [Carbon::createFromDate(2016, 5, 12)->toDateString(), Carbon::createFromDate(2016, 5, 28)->toDateString()])
Надеюсь, это сработает!