【发布时间】:2011-09-23 21:56:00
【问题描述】:
这是他们的文档所说的
你也可以将一个字符串传递给 result(),它代表一个类 为每个结果对象实例化(注意:必须加载此类)
$query = $this->db->query("SELECT * FROM users;"); foreach ($query->result('User') as $user) { echo $row->name; // call attributes echo $row->reverse_name(); // or methods defined on the 'User' class }
尽管他们正在回显 $row 而不是 $user... 这似乎对我不起作用。这是我的测试版本
型号
class User extends CI_Model{
var $first;
var $last;
..
function getName() {
return $this->first + " " + $this->last;
}
}
控制器
class Tester extends CI_Controller {
public function index() {
$this->load->model('User');
$query = $this->db->query('SELECT * from USERS');
$data = array (
'regular' => $query->result(),
'modeled' => $query->result('User')
);
$this->load->view('test', $data);
}
}
查看
foreach ($regular as $row) {
echo "{$row->FIRST} {$row->LAST} <BR/>";
}
echo "<br/>";
foreach ($modeled as $row) {
echo "{$row->getName()} <BR/>";
}
我做错了什么或误解了吗?我会假设根据他们的文档,如果我将一个类分配给结果集,那么该类应该填充结果吗?现在,如何继续知道要映射到哪个字段对我来说是一个谜,并且很可能是这不起作用的原因。我想也许我需要修改构造函数来做这个映射,但我没有看到任何关于我将如何去做的文档。我尝试为构造函数输入一个参数,假设它是一个 StdClass 数组,但似乎不起作用。
任何澄清都会很棒!
【问题讨论】:
-
你试过 echo $user->name;
-
$query->result('User') 如果你使用 put $query->result_array();
标签: codeigniter model