我有一个与 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();
所以在调用该方法后,在 Controller 中,我需要访问 num_rows:
$num_rows = $total_projects->num_rows;
(我知道你们中的一些人可能会质疑在 Controller 中使用 num rows 背后的原因。这与设置分页有关。可能有更好的方法来做,但没有时间在这个特定项目中。)
我的问题是这会造成语法错误:
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。那么我该如何调用它才能使它特定于对象呢? (显然我可以在第二次调用之前将其存储在变量中。)
最佳答案
发生这种情况是因为您的变量 $total_projects
没有该类的实例。它仅包含 Get_Projects()
函数的结果。
在完成所有操作后,您应该尝试 $num_rows = $this->project_model->num_rows
(未测试)
关于php - CodeIgniter 模型和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9393238/