我有一个与CI模型的特定实例的属性有关的问题.例如:
有一个名为project_model的模型.在模型中,它有一个名为Get_Projects的方法:
$total_projects = $this->project_model->Get_Projects($options);
调用此方法时,它将在模型中创建一个属性,如下所示:
$query = $this->db->get('projects');//query
$this->num_rows = $query->num_rows();
return $query->result();
因此,在调用方法并在控制器中之后,我需要访问num_rows:
$num_rows = $total_projects->num_rows;
(我知道你们中的有些人可能会质疑在控制器中使用num行的原因.这与设置分页有关.也许有更好的方法可以做到这一点,但是在这个特定项目中没有时间.)
我的问题是,这会产生语法错误:
Severity: Notice
Message: Trying to get property of non-object
Filename: controllers/projects.php
Line Number: 110 ($num_rows = $total_projects->num_rows;)
首先这是为什么?我当时正在考虑使用此代码:$this-> project_model :: num_rows而不是?但是,然后num_rows不会特定于$total_rows对象吗?因此,它将仅适用于整个模型.
顺便说一句:我阅读了关于模型的CI指南,但是关于创建模型实例的信息完全没有.
编辑:我需要num_rows属性的结果是特定于对象的.因此,例如:
$a=$this->project_model->Get_Projects($options);
$b=$this->project_model->Get_Projects($options);
$num_rows = $this->project_model->num_rows;
最后一行将得到$b num_rows而不是$a的结果.那么我如何称呼它,以便使它成为特定于对象的? (显然,我可以在第二次调用之前将其存储在变量中.)
解决方法:
您可以在每次需要时实例化模型.
$object_one = new $this->project_model;
$foo = $object_one->Get_Projects($options);
var_dump($foo);
echo $object_one->num_rows;
$object_two = new $this->project_model;
$bar = $object_two->Get_Projects($options);
var_dump($bar);
echo $object_two->num_rows;
这样,您可以分别获取/设置每个模型实例的任何属性.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。