以下是他们的文档说明
您还可以将字符串传递给表示类的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数组,但似乎不起作用。
任何澄清都会很棒!
答案 0 :(得分:0)
所以我突然想到检查db_results函数的实际源代码,并且我认为这是由于查询结果列的情况。除非您在查询字符串中将其指定为小写,否则CI似乎默认所有内容都为UPPERCASE。
总而言之,无论您的查询中的列是什么情况,都应该是模型中值的情况!
虽然看起来很荒谬......我可能会看到我是否可以编辑核心类而不区分大小写。除非有人有更好的选择。