对另一个表中的数据进行索引并传递数据以匹配另一个查询时出错


Error while indexing data in another table and passing it to match another query

我有这些表:(问题中截断了不需要的列)

房间:room_id|room_type_id|room_number

房间类型(_T):room_type_id | room_type|room_type_default_price

预订:reservation_id room_type|checkin|checkout

  1. 当用户通过输入所需的房间类型、到达日期、离开日期来搜索可用房间时,必须在下拉列表中填充可用房间类型。然而,有两个问题,一个是已知的,另一个是未知的下面的代码在页面(视图)加载时只返回一个"数组到字符串转换错误"

  2. 已知的问题是,房间类型的下拉列表中也填充了room_types表中的数据。对于JS/jQuery计算,我在填充时连接了room_type列和room_type_default_price列。所以生成的HTML是这样的:

双人间

因此,用户输入$room_type的形式为,例如"Double room_2000",其中最初不存在这样的列数据。不过,在房间类型表中,room_type列具有"Double room"。如何将这两个值分开,并将room_type_id设置为$room_type_id?

型号:

function searchRoomType($room_type) {
    $query = $this->db->query(" SELECT room_type_id FROM room_types WHERE room_type = '$room_type' LIMIT 1");
    return $query->result();
    //return $room_type_id;
    //print_r ($room_type_id);
}
function searchRooms($room_type, $start_date, $end_date, $tmpRoomNumber = array()) {
    $room_type_id = $this->searchRoomType($room_type);
    $query = $this->db->query(
        "SELECT a.room_number
        FROM rooms a LEFT OUTER JOIN (  SELECT room_number
                                        FROM reservations
                                        WHERE checkin >= '$start_date'
                                        AND checkout <= '$end_date'
                                        ) b
        ON a.room_number = b.room_number
        WHERE a.room_type_id = '$room_type_id'
        AND a.housekeeping_status = 'Clean'
        AND b.room_number is NULL
        GROUP BY a.room_type_id
        ORDER BY a.room_number ASC");
    if($query->num_rows()>0) {
        foreach($query->result_array() as $row) {
            $tmpRoomNumber[$row['room_number']] = $row['room_number'];
        }
    }
    return $tmpRoomNumber;
}

我认为你应该像这个一样更改函数searchRoomType

function searchRoomType($room_type) {
    $query = $this->db->query(" SELECT room_type_id FROM room_types WHERE room_type = '$room_type' LIMIT 1");
    foreach ($query->result() as $row)
    {
      $room_type_i=$row->room_type_id;
    }
  return $room_type_id;
}