Запрос даты Laravel

#php #mysql #laravel #date #eloquent

Вопрос:

У меня есть одна таблица vehicle_unavailabilities со следующей структурой:

vehicle_unavailabilities_таблица

From_date и to_date-это даты, на которые было забронировано транспортное средство, и они не должны отображаться в результатах поиска для указанных дат.

В поле формы поиска есть два ввода: from_date и to_date. Мне нужно получить данные, доступно ли транспортное средство или нет. Я попытался следовать красноречивому запросу. Но я не думаю, что это работает. Может ли кто-нибудь помочь в построении запроса в соответствии с этим требованием?

 public function getUnavailability($vehicle_id,$from,$to)
    {
        $vehicles = VehicleUnavailability::where('vehicle_id',$vehicle_id)->where('status',1)
                                            ->whereBetween('from_date', [$from, $to])
                                            ->orwhereBetween('to_date', [$from, $to])->get();
    }
 

Заранее спасибо!!

Комментарии:

1. вы пробовали whereDateBetween вместо whereBetween

2. Иногда такие столы называются «заказами»

3. И, как правило, Событие A перекрывает Событие B, если Событие A начинается до окончания События B и заканчивается после начала события B.

4. @Strawberry, спасибо за ваш ответ. поскольку после бронирования может возникнуть проблема недоступности, мне пришлось создать эту таблицу. Есть ли какой-нибудь способ решить эту проблему?

5. @Эспрессо. Я действительно пробовал и это тоже. Этот запрос фактически проверяет только from_date и to_date из базы данных, а не интервал между ними.

Ответ №1:

где сравниваются две даты и этого достаточно.

     $VehicleUnavailability= Car::where('status', 1)
        ->where('vehicle_id',$vehicle_id)
        ->where('from_date', '<=', $from)
        ->where('to_date', '>=', $to)->get();