0

我有一些真正难以解决的问题。基本上我会搜索一个房间,然后我会显示一个符合条件的房间列表(包括分页)。现在,当我尝试调用房间的图像时,问题就出现了。第一张图片将显示,但其余的不会,我收到错误:

遇到 PHP 错误 严重性:通知

消息:未定义的偏移量:0

文件名:views/search_view.php

行号:27

遇到 PHP 错误 严重性:通知

消息:试图获取非对象的属性

文件名:views/search_view.php

行号:27

这是我到目前为止所做的

我的模型:

function get_room_image($rid)
{
    $q = $this->db
        ->where('room_id',$rid)
        ->limit(1)
        ->get('room_image');

    return $q->result();

}

function search_rooms() 
{
    $q = $this->db
        ->where('features', $this->input->post('features'))
        ->get('rooms');

    $room['results'] = $q->result();

    return $room['results'];
}

我的控制器:

function search()
{
    $data['main_content'] = 'search_view';
    $data['page_title'] = 'Search';

    $data['results'] = $this->site_model->search_rooms();

    $this->load->view('includes/template',$data);
}

我的观点:

...    
<?php foreach ($results['results'] as $room) { 

    $room_images = $this->site_model->get_room_image($room->id); ?>
        <div class="col2 bot">

            <div class="col_head"></div>
                <div class="col_info">
                <table border="0" cellpadding="5" cellspacing="5">
                <tr><td> 
                <img src="<?php echo base_url() . 'room/' . $room_images[0]->image_name; ?>" border="0" class="imgbox" />
                </td> 
...

第 27 行实际上是上面带有 img 标签的行

当我按要求执行 var_dump 时,我得到以下信息:

array(1) {
  [0]=>
  object(stdClass)#27 (3) {
    ["id"]=>
    string(1) "1"
    ["room_id"]=>
    string(1) "1"
    ["image_name"]=>
    string(36) "1614d828817ac5b396660621048b167a.jpg"
  }
}

array(0) {}
array(0) {}
array(0) {}
...

所以它似乎没有在每次迭代中正确执行 get_room_image 函数

任何建议都是最受欢迎的。

问候,

4

2 回答 2

3

首先,我认为您不应该从视图中调用模型。您应该从控制器中调用模型并将其传递给您的视图。另一个谈论这个的SO帖子:https ://stackoverflow.com/a/1733309/1260593

您应该尝试对模型中的表执行连接。

模型:

function search_rooms() 
{
$q =  $this->db
 ->select('*')
 ->from('rooms')
 ->where('features', $this->input->post('features'))
 ->join('room_image', 'rooms.id = room_image.room_id');

return $q;
}

控制器:

$data['main_content'] = 'search_view';
$data['page_title'] = 'Search';

$data['results'] = $this->site_model->search_rooms();

$this->load->view('includes/template',$data);

看法:

<?php foreach ($results->result() as $room) { 

   $image = $room->image_name;
    <div class="col2 bot">

        <div class="col_head"></div>
            <div class="col_info">
            <table border="0" cellpadding="5" cellspacing="5">
            <tr><td> 
            <img src="<?php echo base_url() . 'room/' . $image; ?>" border="0" class="imgbox" />
            </td> 
}
于 2012-06-22T06:00:21.043 回答
0

问题已解决,因为我忘记添加“;” 到我的数据库查询字符串中的一行

于 2012-06-22T12:39:36.167 回答