Получите и сопоставьте данные с предстоящими 15 днями - PullRequest
0 голосов
/ 29 апреля 2019

Я работаю с codeigniter, у меня есть две таблицы (информация о магазине и бронирование), и я хочу получить данные через 30 минут после магазин открыт и я хочу проверить, забронирован ли магазин в это время, я забираю и успешно делаю 30-минутный слот, но как я могу получить запись и матч на предстоящие 15 дней? означает, что я хочу получить и сравнить данные за 15 дней после сегодняшней даты. Как я могу это сделать?

Мне нужны такие данные (забронировано с 9:00 до 09:30)

"availability": [
            {
                "id": 1,
                "date": "29-Apr-2019",
                "arrTimeSlots": [
                    {
                        "id": 1,
                        "time": "09:00 AM",
                        "alreadyBooked": true
                    },
                    {
                        "id": 2,
                        "time": "09:30 AM",
                        "alreadyBooked": true
                    },
                    {
                        "id": 3,
                        "time": "10:00 AM",
                        "alreadyBooked": false
                    },
                "date": "30-Apr-2019",
                "arrTimeSlots": [
                    {
                        "id": 1,
                        "time": "09:00 AM",
                        "alreadyBooked": false
                    },
                    {
                        "id": 2,
                        "time": "09:30 AM",
                        "alreadyBooked": false
                    },
                    {
                        "id": 3,
                        "time": "10:00 AM",
                        "alreadyBooked": false
                    },  
            }

Вот мой текущий код, как я могу это сделать?

$add_data['shop_id'] = ($this->input->post('shop_id') && !empty($this->input->post('shop_id'))) ? $this->input->post('shop_id') : NULL;     

                $this->db->select('*');
                $this->db->from('additional_info');
                $this->db->where('shop_id',$add_data['shop_id']);
                $query = $this->db->get();
                if ( $query->num_rows() > 0 )
                    {
                        $row = $query->row_array();
                        $start=$row['shop_open_time'];
                        $end=$row['shop_close_time'];
                        $start_time=substr($start, 0, -10);
                        $end_time=substr($end, 0, -10);
                        $start_time = new DateTime($start_time);
                        $close_time = new DateTime($end_time);
                        $periods = new DatePeriod($start_time, new DateInterval('PT30M'), $close_time);
                        foreach ($periods as $period) {
                            $times[] = $period->format('H:i');
                        }
                        $times[] = $close_time->format('H:i');
                        //print_r($times);

                        $availability = array_fill_keys($times, 'available');
                        function book(&$availability, $start, $end)
                        {
                            foreach($availability as $k => $v)
                                if(strtotime($k) >= strtotime($start) && strtotime($k) <= strtotime($end))
                                    $availability[$k] = 'booked';
                        }                       

                $this->db->select('*');
                $this->db->from('usr_booking');
                $this->db->where('shop_id',$add_data['shop_id']);
                $queryc = $this->db->get();
                foreach($queryc->result_array() as $results)
                    {
                        //print_R($results);            
                             $s=$results['start_time'];
                          $e=$results['end_time'];
                        book($availability, $s, $e);
                    }
                echo "<pre>";print_r($availability);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...