如何将结果从模型传递到 CodeIgniter 中的控制器?
Posted
技术标签:
【中文标题】如何将结果从模型传递到 CodeIgniter 中的控制器?【英文标题】:How to pass result from Model to Controller in CodeIgniter? 【发布时间】:2017-12-03 11:55:54 【问题描述】:我想从数据库中获取数据并使用 CodeIgniter 将其显示在网页上。我对我的控制器、模型和视图进行了如下编码。
控制器;
//HomeController
<?php
class HomeController extends CI_Controller
public function index()
$this->load->model('HomeModel');
$data['records'] = $this->HomeModel->getData();
$this->load->view('HomeView',$data);
?>
型号;
//HomeModel
<?php
class HomeModel extends CI_Model
public function getData()
$query = $this->db->query('SELECT * FROM data');
return $query->unbuffered_row('object');
?>
查看;
//HomeView
<?php
echo "Recoeds from database<br>";
while($records)
echo $records->name." ".$records->age."</br>";
?>
但是这段代码不会在屏幕上打印任何东西。(echo "Records from database<br>";
)
所以我尝试了 CodeIgniter 文档中给出的以下代码,并在模型本身中回显结果,而不是将其返回给控制器,然后返回给视图。它工作正常。
//HomeModel
<?php
class HomeModel extends CI_Model
public function getData()
$query = $this->db->query('SELECT * FROM data');
while ($row = $query->unbuffered_row())
echo $row->name;
echo $row->age;
?>
我的问题是我们如何将unbuffered_row()
方法的结果返回到控制器中,然后按照 MVC 架构返回到视图中?我们可以通过在模型本身上回显结果来获得输出,但这违背了 MVC 架构的目的。
【问题讨论】:
CodeIgniter 与 MVC 架构无关。 你也可以在模型中使用 $query->result_array() 。返回控制器。在那里您可以轻松访问数据。 如果不是echo "Records from database<br>";
,请检查您的 HomeView.php 文件是否在 application/views
文件夹中。另外,如果您将 while(
从模型移动到控制器并在那里循环 $data['records'] 会发生什么?
【参考方案1】:
您应该使用return $query->result();
,然后在视图或控制器中获取正确的对象(这取决于您)。
【讨论】:
【参考方案2】:试试这个
控制器
<?php
class HomeController extends CI_Controller
public function index()
$this->load->model('HomeModel');
$data['records'] = $this->HomeModel->getData();
$this->load->view('HomeView',$data);
?>
型号
<?php
class HomeModel extends CI_Model
public function getData()
$data = $this->db->query('SELECT * FROM data');
return array('count'=>$data->num_rows(), 'data'=>$data->result(),'first'=>$data->row());
?>
查看
<?php
echo "Recoeds from database<br>";
foreach($record['data'] as $row)
echo $row->name." ".$row->age;
?>
【讨论】:
【参考方案3】:我在本地模拟了你的代码。你的错误在这里。$records 是对象。而你的 while 循环没有退出循环的条件
<pre>
<?php
var_dump($records);
echo "Recoeds from database<br>";
foreach($records as $value)
echo $value->name."<br>";
echo $value->age."<br>";
?>
</pre>
【讨论】:
以上是关于如何将结果从模型传递到 CodeIgniter 中的控制器?的主要内容,如果未能解决你的问题,请参考以下文章
无法将变量从控制器传递到模型以处理codeigniter中的多个上载字段