2014-10-01 105 views
2

我使用codeigniter日历类,我试图显示当前月份的所有保留。在那一天的领域,我可能会有不止一个结果,我想让他们分开昏迷。codeigniter日历类错误消息

不过,我得到以下错误信息:显示

A PHP Error was encountered 
Severity: Notice 
Message: Undefined property: stdClass::$reservationID 
Filename: models/reservationcalendarmodel.php 
Line Number: 81 

A PHP Error was encountered 
Severity: Notice 
Message: Undefined property: stdClass::$reservationArrivalDate 
Filename: models/reservationcalendarmodel.php 
Line Number: 81 

错误10次(我希望从数据库9条)

这里是从模型中(相关)代码:

function getReservations($year,$month) { 
    $currentHotelUser = $this->session->userdata('currentHotelUser'); 
    $query = $this->db->query(
     "SELECT r.* 
     FROM room r 
     LEFT JOIN (SELECT rr.roomID, re.reservationID,re.reservationArrivalDate 
     FROM reservationroom rr 
     LEFT JOIN reservation re ON re.reservationID = rr.reservationID 
     WHERE re.reservationArrivalDate LIKE('".$year."-".$month."-%')) 
     sq ON sq.roomID = r.roomID 
     WHERE r.hotelID = ".$currentHotelUser['hotelID']." 
     AND sq.reservationID IS NOT NULL    
    "); 

    $cal_data = array(); 
    foreach($query->result() as $row) { 
     // BELLOW IS THE LINE 81 WHERE THE ERROR IS 
     $cal_data[substr($row->reservationArrivalDate,8,2)]= $row->reservationID; 
    } 
    return $cal_data; 
}  

function generate($year,$month) { 
    $cal_data = $this->getReservations($year, $month); 
    $this->load->library('calendar', $this->conf); 
    return $this->calendar->generate($year,$month,$cal_data);  
} 

这里是来自控制器的(相关)码:

$this->load->model('ReservationCalendarModel'); 
$data['calendar'] = $this->ReservationCalendarModel->generate($year,$month); 

下面是从视图的(相关)代码:

echo $calendar; 

没有人知道为什么会出现上述错误?

+0

这可能会帮助你:http://stackoverflow.com/questions/3440839/codeigniter-model-error-undefined-property – Matheno 2014-10-01 13:28:35

+0

我有以下几点:$自动加载['libraries'] = array('database','session'); – user2417624 2014-10-01 13:30:23

+0

在违规行前添加'print_r($ row)'。发布结果。 – 2014-10-04 17:23:18

回答

2

问题是你的查询结果没有reservationID和reservationArrivalDate。这就是原因,在你循环的过程中出现这个错误。在主选择查询,添加这两列

"SELECT r.*, sq.roomID, sq.reservationId 
     FROM room r 
     LEFT JOIN (SELECT rr.roomID, re.reservationID,re.reservationArrivalDate 
     FROM reservationroom rr 
     LEFT JOIN reservation re ON re.reservationID = rr.reservationID 
     WHERE re.reservationArrivalDate LIKE('".$year."-".$month."-%')) 
     sq ON sq.roomID = r.roomID 
     WHERE r.hotelID = ".$currentHotelUser['hotelID']." 
     AND sq.reservationID IS NOT NULL    
    "