我正在解决一个问题。基本上我会搜索一个房间,我会显示符合标准的房间列表(包括分页)。现在,当我试图打电话给房间的图像时,问题出现了。第一张图片会显示,但其余的不会显示,我收到错误:
遇到严重错误:通知
消息:未定义的偏移量:0
文件名:views / search_view.php
行号:27
遇到严重错误:通知
消息:尝试获取非对象的属性
文件名: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函数
欢迎任何建议。
此致
答案 0 :(得分: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>
}
答案 1 :(得分:0)
问题已解决,因为我忘了添加“;”在我的数据库查询字符串
中的一行