我有以下简单的代码: 模特:
function get_last_ten_entries()
{
$this->db->get('property');
}
控制器:
public function load_recent()
{
$data['info'] = $this->propertymodel->get_last_ten_entries();
$this->load->view('load_property', $data);
}
视图:
<?
echo $data['id'];
?>
这不起作用。我确定我做错了,因为显示的错误是
遇到PHP错误
严重性:注意
消息:未定义的变量:数据
文件名:views / load_property.php
行号:2
属性是数据库中的一个表,其中有一个名为id的字段。出了什么问题?
谢谢大家
答案 0 :(得分:4)
要修复错误,您需要在视图中使用$info
,而不是$data
,因为控制器中的数组索引对应于视图中的变量。
$this->db->get('property')
返回表property
中的所有行,但是您的函数名称表明您正在尝试获取最后10个条目。我建议你阅读CodeIgniter's Active Record documentation了解更多信息。您还需要return
您的查询。
您需要从查询中生成结果。 CodeIgniter's Query Results documentation提供了有关如何使用查询结果的有用信息。你想要实现的是有点模糊但你的代码看起来像这样:
<强>模型强>
function get_last_ten_entries()
{
return $this->db->get('property'); //Perform query (you'll need to update to select what you actually want from you database)
}
<强>控制器强>
public function load_recent()
{
$data['last_entries'] = $this->propertymodel->get_last_ten_entries();
$this->load->view('load_property', $data);
}
查看强>
foreach ($last_entries->result_array() as $entry)
{
echo $entry['id'];
}
或者,如果您更喜欢使用对象而不是数组:
foreach ($last_entries->result() as $entry)
{
echo $entry->id;
}
答案 1 :(得分:2)
首先,你在模型中的功能不会返回任何东西。试试这个:
function get_last_ten_entries()
{
$result = $this->db->get('property');
return $result->result_array();
}
当你修复它时,你的视图中会有变量$ info,因为Codeigniter会将给定数组计算为load->view( $view, $givenarray);
上的不同变量
例如
$data['variable1'] = 'first var';
$data['array'] = array('id' => 1, 'name' => 'myname' );
$this->load-view('view', $data);
允许您在视图文件中使用变量,如下所示
echo $variable1; // echoes 'first var';
echo $array['name']; // echoes myname