Я работаю в системе онлайн-бронирования велосипедов, где клиент может забронировать велосипед для определенного диапазона времени и даты. Если другой клиент заказывает тот же велосипед для указанного диапазона времени и даты, я должен проверить, уже забронирован ли велосипед или нет. Моя таблица базы данных reservations
выглядит следующим образом:
id bike_id start_date end_date
1 1 2019-05-04 14:30 2019-05-04 15:30
1 1 2019-05-04 16:30 2019-05-04 18:30
Запрос:
Reservations::where('bike_id', $yacht)
->where(function ($query) use ($startTime, $endTime) {
$query->where(function ($query) use ($startTime, $endTime) {
$query->where('start_date', '<', $startTime)
->where('end_date', '>', $startTime);
})
->orWhere(function ($query) use ($startTime, $endTime) {
$query->where('start_date', '>', $endTime)
->where('end_date', '<', $endTime);
});
})
->count();
К сожалению, похоже, код не работает. Он не проверяет состояние должным образом. Как правильно выполнить нужную проверку с использованием заданных входов?