【发布时间】:2016-10-25 04:22:09
【问题描述】:
我正在研究酒店预订系统,目前我正在尝试选择可用房间(未预订)。
Rooms DB Structure:
ID
ROOM NAME
CAPACITY
HOTEL RESERVATIONS DB STRUCTURE:
ID
CHECK_IN
CHECK_OUT
ROOMS
...
这是我当前的代码:
function searchFreeRooms($data){
$check_in = $data['fields']['check_in'];
$check_out = $data['fields']['check_out'];
$this->db->select("*");
$this->db->from('core_hotel_rooms');
$this->db->where("id NOT IN (select rooms,total_guests from res_hotel where check_in <= '$check_in' AND check_out >= '$check_in' OR check_in <= '$check_out' AND check_out >= '$check_out' OR check_in >= '$check_in' AND check_out <= '$check_out' ) ");
$query = $this->db->get();
return $query->result();
}
用户一次可以预订多个房间,预订的房间ID存储在“ROOMS”列中,以逗号分隔,例如:2、3、5
在我的前面,不应显示此列中存在的房间,但我遇到了麻烦,因为只选择了逗号之前的第一个 id(room),例如:2,3,5 > 仅选择了 2 和 3, 5仍然显示在我的前面。
问题在这里:$this->db->where("id NOT IN (select rooms,total_guests from res_hotel where check_in <= '$check_in' AND check_out >= '$check_in' OR check_in <= '$check_out' AND check_out >= '$check_out' OR check_in >= '$check_in' AND check_out <= '$check_out' ) ");
我试过这个:$this->db->where("id NOT IN (1, 2) ");,它工作得很好,但不是第二个查询的上层方法。
对不起我的英语......
非常感谢所有可以提供帮助的人!
【问题讨论】:
标签: php mysql codeigniter