Php 对布尔函数调用成员函数意味着什么以及如何修复

Php 对布尔函数调用成员函数意味着什么以及如何修复,php,model-view-controller,cakephp-3.0,Php,Model View Controller,Cakephp 3.0,我是cakePHP 3的新手。我已经创建了一个控制器和模型,在这里我调用一个函数从数据库中获取所有用户。 但是当我运行下面的代码时,我会得到以下错误“调用成员函数get_all_users()on boolean” 此错误意味着什么?我如何修复此错误 User.php(模型) userscocontroller.php(控制器) 通常,当使用控制器的不存在属性时,会发生此错误 与控制器名称匹配的表不需要是,但即使它们最初不存在,尝试访问它们会导致调用controllers magic gette

我是cakePHP 3的新手。我已经创建了一个控制器和模型,在这里我调用一个函数从数据库中获取所有用户。 但是当我运行下面的代码时,我会得到以下错误“调用成员函数get_all_users()on boolean”

此错误意味着什么?我如何修复此错误

User.php(模型)

userscocontroller.php(控制器)


通常,当使用控制器的不存在属性时,会发生此错误

与控制器名称匹配的表不需要是,但即使它们最初不存在,尝试访问它们会导致调用controllers magic getter方法,该方法用于延迟加载属于控制器的表类,并在出错时返回
false
,这就是它发生的地方,您将对布尔值调用一个方法

在您的案例中,问题是
用户
(对于实体为单数)与预期的
用户
(对于表为复数)不匹配,因此找不到匹配的表类

您的自定义方法应该放在表类中,即
UsersTable
类中,然后通过

$this->Users

您可能需要重新读取文档,实体不查询数据(除非您正在实现延迟加载),它们表示一个数据集

这意味着您做了类似于
$foo=false$foo->somethod()
,这显然是不可能的。true/false不是对象,显然没有方法。但这是布尔集吗?因为get_all_users()即使在结果为null的情况下也始终会给出一个数组。这不意味着您还没有实际实例化用户对象吗?所以代码不知道这个函数存在。也许这个线程可以解释一下,也许你的方法返回false是因为数据/连接不好,但是当我这样做时$this->set('users',$this->users->find('all');在index()函数中,它将起作用。
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());
    }
}
$this->Users