我正在使用较旧的教程(他们使用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个结果,而不是视频中的所有结果。
需要改变什么?
答案 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();