@TanykaGURU

Есть ли метод в Laravel, который устанавливает начальную дату для поиска информации в базе без первоначального её нахождения?

Хай!

Есть ли метод в Laravel, который устанавливает начальную дату для поиска информации в базе без первоначального её нахождения?

Допустим хочу получить все данные за определенный интервал:
$dateEnd = new DateTime('2020-11-01');
$end = $dateEnd->format('Y-m-d')

Model::whereDate('created_at', '>=', 'ЧТО ЗДЕСЬ?')->whereDate('created_at', '<=', $end)->get();

Пробовал добавить так:
$dateStart = new DateTime('2018-11-01');
$start = $dateStart->format('Y-m-d')

Но если в базе нет данных от 2018-11-01, то выходит ошибка.
Так как можно добавить начальную дату, не делая лишнего запроса в базу?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@Arik
Где-то у вас ошибка, база не может на правильный запрос давать ошибки, просто вернет пустой результат.

если вам известно дата только "До", то "От" просто не ставьте.

$query = Model::query();
if($from) {
    $query->whereDate('created_at', '>=', $from);
}
if($to) {
    $query->whereDate('created_at', '<=', $to);
}
$result = $query->get();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
agoalofalife
@agoalofalife
Full stack разработчик
Если просто запрос можно сделать так
$from = date('2018-11-01');
$to = date('2020-11-01');
// или Carbon

$from = Carbon::parse('2018-11-01')->toDateTimeString();

Model::whereBetween('created_at', [$from, $to])->get();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы