Как сравнить наличие расписаний в таблице бронирований с php?

Что я хочу сделать, так это проверить, что при бронировании я проверяю, что он уже занят, но в настоящее время все, что я делаю, это проверяю расписание между ними. Пример: уже есть бронирование с 8:00 до 8:00 вечера, я уже достиг, что если кто-то забронировал, например, с 9:00 до 7:00 вечера (между часами), но я не могу сделать это при бронировании примера : С 06:00 до 13:00 только 13 находится в диапазоне бронирования.

function esta_ocupado($dia, $horarioinicio, $horariofin, $id_amenidad){

$valores = [];
 $Reservas = Reservas::where("dia", date($dia))->where("amenidad_id", $id_amenidad)->get();


 foreach ($Reservas as $re) {
     if (($horarioinicio >=  $re->horario_inicio_id && $horarioinicio <= $re->horario_fin_id) || ($horariofin >=  $re->horario_inicio_id && $horariofin <= $re->horario_fin_id) ) {
       array_push($valores, true);

     }else{
         array_push($valores, false);
     }
 }

foreach ($valores as $val) {
    if ($val) {
      return true;
    }
}

return false;

}
1
задан 28.11.2019, 17:54
1 ответ

Чтобы определять, если два интервала перехватывают доказательство это правило

start0 < end1 and end0 > start1

, Где [start0, end0] может быть сделанный резерв и [start1, end1], смоги быть резервом, который просится, или наоборот. Если condiciГіn выполняются тогда интервалы, перехватываются

Используя твои данные о примере:

08:00 < 13:00 and 20:00 > 06:00

Условие оценивает в true, а именно, уже существует резерв в этом расписании

1
ответ дан 01.12.2019, 10:40

Теги

Похожие вопросы