不确定这句话的最佳表达方式对我有所帮助。
在Codeigniter中,我可以返回我的对象的记录集没有问题,但这是作为stdClass对象而不是作为“模型”对象(例如页面对象)返回的,然后我可以使用它来使用其他方法那个模特。
我在这里错过了一招吗?或者这是CI中的标准功能吗?
答案 0 :(得分:8)
是的,基本上为了使其工作,您需要在类范围内声明Model对象属性,并引用$this
作为当前模型对象。
class Blogmodel extends CI_Model {
var $title = '';
var $content = ''; // Declare Class wide Model properties
var $date = '';
function __construct()
{
// Call the Model constructor
parent::__construct();
}
function get_entry()
{
$query = $this->db->query('query to get single object');
$db_row = $query->row(); //Get single record
$this->title = $db_row->title;
$this->content = $db_row->content; //Populate current instance of the Model
$this->date = $db_row->date;
return $this; //Return the Model instance
}
}
我相信get_entry()
会返回一个对象类型Blogmodel
。
答案 1 :(得分:0)
你不需要像:
$this->title = $db_row->title; $this->content = $db_row->content; //Populate current instance of the Model $this->date = $db_row->date;
只需将结果()方法放入ur model:
result(get_class($this));
或
result(get_called_class());
你会得到你模特的实例!
答案 2 :(得分:0)
我对这个问题的解决方案包括jondavidjohn的回答和mkoistinen的评论。
根据CodeIgniter documentation:
您还可以将字符串传递给表示类的result() 为每个结果对象实例化(注意:必须加载此类)
有了这些知识,我们可以用这种方式重写jondavidjohn的解决方案:
class Blogmodel extends CI_Model {
var $title = '';
var $content = ''; // Declare Class wide Model properties
var $date = '';
function __construct()
{
// Call the Model constructor
parent::__construct();
}
function get_entry()
{
$query = $this->db->query('query to get single object');
$blogModel = $query->row('Blogmodel'); //Get single record
return $blogModel; //Return the Model instance
}
}