我是cakePHP 3的新手。我创建了一个控制器和模型,我调用一个函数来从数据库中获取所有用户。 但是当我运行下面的代码时,我将得到以下错误"在布尔" 上调用成员函数get_all_users()。
这个错误意味着什么,我该如何解决这个问题?
User.php(型号)
public function insert_id($id){
$result = $this->db->insert('table_with_id',$id);
return $result;
}
UsersController.php(控制器)
namespace App\Model\Entity;
use Cake\ORM\Entity;
class User extends Entity {
public function get_all_users() {
// find users and return to controller
return $this->User->find('all');
}
}
答案 0 :(得分:16)
通常,当使用控制器的不存在属性时会发生此错误。
与控制器名称匹配的表不需要loaded/set to a property manually,但最初甚至不存在,尝试访问它们会导致调用控制器魔术getter方法,用于延迟加载表属于控制器的类,它在出错时返回false
,就在它发生的地方,你将在布尔值上调用一个方法。
<强> https://github.com/cakephp/.../blob/3.0.10/src/Controller/Controller.php#L339 强>
在您的情况下,问题是User
(单数,对于实体)与预期的Users
(复数,对于表)不匹配,因此找不到匹配的表类。
您的自定义方法应该放在一个表类中,而不是UsersTable
类,然后您应该通过
$this->Users
您可能想重读文档,实体不查询数据(除非您是实施延迟加载),它们代表数据集!