#php #mysql #laravel #date #eloquent
Вопрос:
У меня есть одна таблица 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();