首页 文章

如何在CodeIgniter中将结果从Model传递给Controller?

提问于
浏览
2

我想从数据库中获取数据并使用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架构的目的 .

3 回答

  • 0

    您应该使用 return $query->result(); ,然后在视图或控制器中获取正确的对象(由您决定) .

  • 1

    试试这一个

    调节器

    <?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;
    }
    
    ?>
    
  • 0

    我在本地模拟你的代码 . 你的错误就在这里 . $ 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>
    

相关问题