0

我正在使用较旧的教程(他们使用的是 1.7)来学习 CI,所以也许这就是问题所在。

我有这个作为我的模型:

class Site_model extends CI_Model {

    function getAll() {
        $q = $this->db->get('test');

        if ($q->num_rows() > 0) {
            foreach ($q->result() as $row) {
                $data['records'] = $row;
            }
            return $data;
        }
    }

}

这作为控制器

class Site extends CI_Controller {

    function index() {
        $this->load->model('site_model');
        $data['records'] = $this->site_model->getAll();
        $this->load->view('home', $data);
    }


}

但是视图文件只返回 1 个结果,而不是视频中的所有结果。

需要改变什么?

4

3 回答 3

2

我将以这种形式更改您的模型。更清楚了!

模型:

class Site_model extends CI_Model {

    function getAll() {
        return $this->db->get('test')->result_array();
    }

}

控制器:

class Site extends CI_Controller {

    function index() {
        $this->load->model('site_model');
        $data['records'] = $this->site_model->getAll();
        $this->load->view('home', $data);
    }


}

看法:

<html>
    <head></head>
    <body>
       <?php foreach($records as $r): 
         echo $r['column_name']; // name of table column
       endforeach; ?>
    </body

</html>
于 2013-08-03T16:58:51.873 回答
1

试试喜欢

function getAll() {
    $q = $this->db->get('test');

    if ($q->num_rows() > 0) {
        foreach ($q->result() as $row) {
            $data['records'][] = $row;    //Here you need to give an array
        }
        return $data;
    }
}

您将所有值分配给一个变量,因此它只保存一行数据。您需要保留一个数组来捕获所有数据行并将数组传递给控制器​​,然后传递给视图

当我们给出 $data[] 时,它会将 $data 视为一个数组,它会分配像 $data[0],[1],[2] 这样的变量......如果我们只给出 $data那么它将被视为变量,并且一次只取一个变量或值。

于 2013-08-03T12:24:16.323 回答
0

我建议使用 ci 模型类的扩展。http://github.com/jamierumbelow/codeigniter-base-model

它非常有用,充满了非常好的功能,您将一遍又一遍地使用。

你想要的这个库是 get();

于 2013-08-03T13:05:20.290 回答