Я пытаюсь создать страницу отчета, которая отображает отчеты с определенной даты до определенной даты. Вот мой текущий код:
$now = date('Y-m-d');
$reservations = Reservation::where('reservation_from', $now)->get();
Что это делает в простом SQL select * from table where reservation_from = $now
.
У меня есть этот запрос, но я не знаю, как преобразовать его в красноречивый запрос.
SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to
Как преобразовать приведенный выше код в красноречивый запрос? Заранее спасибо.
reservation_from
. вы можете использовать значения углерода на основе этого.Reservation::where('reservation_from', '>=', Carbon::createFromDate(1975, 5, 21);) ->where('reservation_from', '<=', Carbon::createFromDate(2015, 5, 21);)->get()
,;Ответы:
The
whereBetween
метод проверяет , что значение столбца находится между двумя значениями.В некоторых случаях необходимо динамически добавлять диапазон дат. Основываясь на комментарии @Anovative , вы можете сделать это:
Если вы хотите добавить больше условий, вы можете использовать
orWhereBetween
. Если вы хотите исключить интервал дат, вы можете использоватьwhereNotBetween
.Другие полезные статьи , где:
whereIn
,whereNotIn
,whereNull
,whereNotNull
,whereDate
,whereMonth
,whereDay
,whereYear
,whereTime
,whereColumn
,whereExists
,whereRaw
.Laravel рассказывает о предложениях Where.
источник
$from
и$to
были динамическими датами, принадлежащими модели? Как и в естьeffective_at
иexpires_at
поле , и я хочу , чтобы запрос , чтобы увидеть , если текущий элемент находится в пределах этого диапазона. Я пробовалeach()
использовать ifCarbon::now()->between( ... )
, но он по-прежнему возвращает все результаты.filter()
, это помогло.MyModel::all()->where('column', 'value')->filter(function ($item) { if (Carbon::now->between($item->effective_at, $item->expires_at)) { return $item; } })->first();
Другой вариант, если ваше поле
datetime
вместоdate
( хотя он работает в обоих случаях ):источник
Следующее должно работать:
источник
Если вы хотите проверить, существует ли текущая дата между двумя датами в db: => здесь запрос получит список приложений, если приложение сотрудника от и до даты существует в сегодняшней дате.
источник
Попробуй это:
Поскольку вы выполняете выборку на основе значения одного столбца, вы можете упростить свой запрос аналогичным образом:
Получение на основе условия: документы laravel
Надеюсь, это помогло.
источник
И я создал объем модели
Подробнее об объемах:
https://laravel.com/docs/5.8/eloquent#query-scopes
https://medium.com/@janaksan_/using-scope-with-laravel-7c80dd6a2c3d
Код:
И в контроллере добавляем Carbon Library вверху
ИЛИ
Чтобы получить запись за последние 10 дней с этого момента
Чтобы получить запись за последние 30 дней с этого момента
источник
Если вам нужно указать, когда поле datetime должно быть таким.
источник
Я знаю, что это может быть старый вопрос, но я только что оказался в ситуации, когда мне пришлось реализовать эту функцию в приложении Laravel 5.7. Ниже показано, что сработало у меня.
Вам также понадобится Углерод.
источник