Php 将startDatetime和endDatetime与DB表进行比较';s开始日期时间和结束日期时间

Php 将startDatetime和endDatetime与DB表进行比较';s开始日期时间和结束日期时间,php,mysql,codeigniter,datetime,Php,Mysql,Codeigniter,Datetime,我正在为物业预订创建脚本。如果用户希望在2020-04-23 02:15:33至2020-04-23 04:15:33期间预订物业,并且在2020-04-23 01:01:33至2020-04-23 04:00:00期间已经有其他人预订,则必须是已预订的show property $user_start_date = $this->put('start_date'); $user_end_date = $this->put('end_date'); $all

我正在为物业预订创建脚本。如果用户希望在2020-04-23 02:15:33至2020-04-23 04:15:33期间预订物业,并且在2020-04-23 01:01:33至2020-04-23 04:00:00期间已经有其他人预订,则必须是已预订的show property

    $user_start_date = $this->put('start_date');
    $user_end_date = $this->put('end_date');

    $allDates = new DatePeriod(
                new DateTime($user_start_date),
                new DateInterval('P1D'),
                new DateTime($user_end_date.' +1 day')
   );

   $reqDates = [];
    foreach ($allDates as $date) {
        $reqDates[] = $date->format('Y-m-d H:i:s');
    }

    $bookedDates = $this->db->select('start_date,end_date')
                       ->where('status',1)
                       ->where('property_id', $this->put('property_id'))
                       ->group_start()
                       ->where('start_date >=', $user_start_date)
                       ->or_where('end_date >=', $user_start_date)
                       ->group_end()
                       ->get('property_bookings')->result();
    $flag = 1;   
    foreach($bookedDates as $row) {
        $bookingDates = $allDates = new DatePeriod(
                new DateTime($row->start_date),
                new DateInterval('P1D'),
                new DateTime($row->end_date.' +1 day')
        );
        $bookingDatesArr = [];
        foreach ($allDates as $date) {
            $bookingDatesArr[] = $date->format('Y-m-d H:i:s');
        }

        if(!empty(array_intersect($reqDates,$bookingDatesArr))){
            $data = array( 'status' => "FALSE",
                        'message' => "Property already booked in selected dates.");
            $http_code = REST_Controller::HTTP_INTERNAL_SERVER_ERROR;
            $this->response($data, $http_code);
            $flag = 0;
            exit();
        }
    }

    $insertData = array(
        'property_id' => $this->put('property_id'),
        'house_id' => $this->put('house_id'),
        'start_date' => $this->put('start_date'),
        'end_date' => $this->put('end_date')
    );
    if($flag){
        $insert = $this->db->insert('property_bookings', $insertData); 
    }