codeigniter get()方法仅返回1个结果

时间:2013-08-03 12:21:22

标签: codeigniter

我正在使用较旧的教程(他们使用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个结果,而不是视频中的所有结果。

需要改变什么?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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只有它才会被视为变量,它只会一次获取一个变量或值。

答案 2 :(得分:0)

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

这是非常有用的,非常好的功能,你将一遍又一遍地使用。

你想要这个lib的那个是get();