Codeigniter php MVC
我有一个名为“News”的表,有三列:“id”、“title”和“details” 我在codeigniter模型类(称为“News\u model”)中有一个函数(“get\u entry”)Codeigniter php MVC,php,codeigniter,model-view-controller,Php,Codeigniter,Model View Controller,我有一个名为“News”的表,有三列:“id”、“title”和“details” 我在codeigniter模型类(称为“News\u model”)中有一个函数(“get\u entry”) 函数get_entry() { $this->load->database(); 返回$this->db->select('id,title,details')->from('news'); $data['newsarray']=$this->db->row_array(); 返回$data['news
函数get_entry()
{
$this->load->database();
返回$this->db->select('id,title,details')->from('news');
$data['newsarray']=$this->db->row_array();
返回$data['newsarray'];
}
我正在连接数据库,所以这不是问题所在。我想通过使用以下代码从控制器文件调用该函数,从get_entry()返回一个iterable数组。我想使用下面的代码将其推入另一个数组(称为“$data['theNews']”)
foreach($this->News\u model->get\u entry()as$key=>$value){
数组推送($data['theNews'],$value->title);
}
我一直在使用此()上的代码作为模板(特别是函数“get_last_ten_entries()”,但我认为我与上面发布的代码非常接近。我将非常感谢您的帮助。关于您的代码: 在get_entry函数中有两个“return”:
function get_entry()
{
$this->load->database();
// First
return $this->db->select('id,title,details')->from ('news');
$data['newsarray'] = $this->db->row_array();
// Second
return $data['newsarray'];
}
将其更改为:
function get_entry()
{
$this->load->database();
$query = $this->db->select('id,title,details')->from('news');
$data['newsarray'] = $query->row_array();
return $data['newsarray'];
}
现在应该可以了
一些建议:
不要再使用Codeigniter 2
如果您计划返回整个表列,我建议您使用以下代码进行查询:
$query = $this->db->get('news', 1, 20);
其中1,20是极限
现在您可以得到以下结果:
return $query->result();
一个简单的例子:
function get_entry()
{
$this->load->database();
$query = $this->db->get('news', 1, 20);
return $query->result();
}
此方法以对象数组的形式返回查询结果,您可以在控制器中这样打印:
$news_array = $this->News_model->get_entry();
foreach ($news_array as $news)
{
echo $news->id;
}
有关更多示例,请参阅查询生成器
还有一个建议,如果全局需要,只需在application/config/autoload.php中自动加载数据库库。将函数中的代码更改为此即可:
function get_entry()
{
$this->load->database();
$query = $this->db->get('news');
//return $query->result();
foreach ($query->result() as $row)
{
echo "</br>";
echo $row->id;
echo "</br>";
echo $row->title;
echo "</br>";
echo $row->details;
echo "</br>";
}
}
函数get_entry()
{
$this->load->database();
$query=$this->db->get('news');
//返回$query->result();
foreach($query->result()作为$row)
{
回声“”;
echo$row->id;
回声“”;
echo$行->标题;
回声“”;
echo$row->details;
回声“”;
}
}
像这样调用函数会将其打印出来:
$news\u array=$this->news\u model->get\u entry();您的
get\u entry
函数仅返回一行。如果您要迭代多行,请重写函数,使其返回10个或更多结果。请发布您在$data['newsarray'中获得的内容
内置代码片段仅适用于JavaScript/HTML/CSS…您不能在OP中运行PHP。已删除。谢谢。在这里您可以找到最新的framework文档:,。星号不是代码的一部分。只需使用注释来指示行。//您可以发布错误吗?您使用的是哪种代码?第一个还是最后一个e例如?由于我将“get_entry”函数更改为您发布的函数,所以在运行php页面时我没有收到任何错误,但现在,当我尝试从控制器调用此函数时,如下图所示,我什么也没有得到。我想将函数返回的每一行添加到一个名为“theNews”的数组中,但首先,我只想回显下面的内容我把添加到数组中的一行注释掉了,如你所见。$data['theNews']=array();foreach($key=>value){echo$key;//array\u push($data['theNews'],$value->title)}好的,明白了,但我不明白你在使用哪个函数,是这个吗?:函数get\u entry(){$this->load->database();$query=$this->db->get('news',1,20);return$query->result();}是的,我在函数中使用了该代码。我相信它工作正常