我正在尝试构建一个查询来搜索在Codeigniter中开发的网站中的可用酒店。
我有两个单独的表,“酒店”用于存储酒店详细信息,“日历”用于存储日期和可用性。
“酒店”表有id,hotel_title,详情
“日历”表有id(酒店ID),日期,状态(已预订/可用)
以下是我在特定日期获取酒店的代码
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-07-25预订,并于2014-07-26预订。
当我们搜索2014-07-25时,它们没有出现在结果中,当我们搜索2014-07-26它出现时。问题是,如果某个日期的日历表中没有保存状态,我希望该酒店可用(显示在结果中),例如,如果我在2014-07-27搜索该酒店(那里)是没有行保存它“日历”有这个特定酒店的日期和ID),它没有出现在结果中。
我将不胜感激任何建议
感谢
答案 0 :(得分:0)
只需在join on子句条件中替换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');
}
这是示例代码。根据您的需求改变