2014-07-11 21 views
0

我正在嘗試構建一個查詢,以在Codeigniter中開發的網站中搜索可用酒店。 我有兩個單獨的表格,「酒店」存儲酒店的詳細信息,「日曆」存儲日期和可用性。
「酒店」表有ID,hotel_title,(/預約可)詳情
「日曆」表具有ID(酒店ID),日期,狀態在codeiginter中添加條件where子句activerecord

這裏是我的代碼來獲取可用的酒店在特定日期

if($this->input->get('date')){ 
    $this->db->where('calendar.date' , $this->input->get('date')); 
    $this->db->where('calender.status !=' , 'booked'); 
} 
$this->db->select('hotels.id , hotels.title, hotels.details'); 
$this->db->from('hotels'); 
$this->db->join('calender' , 'hotels.id = calendar.id' , 'left outer'); 
$this->db->get()->results(); 

假設有一家酒店在2014年7月25日預訂,並於2014年7月26日開始提供。 當我們搜索2014-07-25時,它沒有出現在結果中,當我們搜索2014-07-26它出現。問題是,我希望酒店在某些日期沒有保存在日曆表中的狀態時默認可用(在結果中顯示),例如,現在如果我在2014-07-27(在那裏搜索該酒店)沒有行將其保存爲具有此特定酒店的此日期和ID的「日曆」),它不會出現在結果中。
我會很感激任何建議。
謝謝

回答

0

只需在連接子句條件中替換您的where條件即可。

if($this->input->get('date')){ 
    $this->db->join('calender' , 'hotels.id = calendar.id AND calendar.date={$this->input->get('date')} AND calender.status != "booked"' , 'left outer'); 
}else{ 
    $this->db->join('calender' , 'hotels.id = calendar.id' , 'left outer'); 
} 

這是示例代碼。根據您的需求更改

+0

不幸的是,即使他們已預訂 –