我是cakePHP 3的新手。我创建了一个控制器和模型,在那里我调用一个函数从数据库中获取所有用户。但是当我运行下面的代码时,我将得到以下错误"调用布尔值上的成员函数get_all_users() "。
这个错误是什么意思,我如何解决这个问题?
User.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');
}
}
UsersController.php(控制器)
namespace App'Controller;
use App'Controller'AppController;
class UsersController extends AppController {
public function index() {
// get all users from model
$this->set('users', $this->User->get_all_users());
}
}
通常在使用控制器中不存在的属性时发生此错误。
与控制器名称匹配的表不需要加载/手动设置为属性,但即使它们最初不存在,尝试访问它们会导致控制器的魔法getter方法被调用,这是用于延迟加载属于控制器的表类,它返回false
错误,这就是它发生的地方,你将调用一个布尔值的方法。
https://github.com/cakephp/.../blob/3.0.10/src/Controller/Controller.php L339
在您的例子中,问题是User
(单数,对于实体)与期望的Users
(复数,对于表)不匹配,因此找不到匹配的表类。
您的自定义方法应该放在一个表类中,即UsersTable
类,然后您应该通过
$this->Users
你可能需要重新阅读文档,实体不查询数据(除非你实现延迟加载),它们代表一个数据集!