Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
控制器中未加载Cakephp 3默认模型_Php_Cakephp_Cakephp 3.0 - Fatal编程技术网

控制器中未加载Cakephp 3默认模型

控制器中未加载Cakephp 3默认模型,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我有一个控制器名CodeBridgeController,还有一个模型表名CodeBridgeTable。 当我调用代码桥表时,如下所示: $this->CodeBridge->find('all')->toArray(); 此生成错误:对非对象调用成员函数find() 文件D:\php\htdocs\cake3\erp\src\Controller\CodeBridgeController.php 第25行 我认为这是一个愚蠢的问题,但我在代码中找不到任何错误,为什么在这个

我有一个控制器名
CodeBridgeController
,还有一个模型表名
CodeBridgeTable
。 当我调用代码桥表时,如下所示:

$this->CodeBridge->find('all')->toArray();
此生成
错误:对非对象调用成员函数find()
文件D:\php\htdocs\cake3\erp\src\Controller\CodeBridgeController.php
第25行
我认为这是一个愚蠢的问题,但我在代码中找不到任何错误,为什么在这个上下文中不加载表。 当我这样称呼它时,它就起作用了

$codeBridgeTable=TableRegistry::get('CodeBridge');
$results=$codeBridgeTable->find('all')->hydrate(false)->toArray()


可能产生问题的原因,需要专家建议。

要解决此问题,只需在尝试使用模型之前加载模型:

$this->loadModel("CodeBridge");
$this->CodeBridge->find('all')->toArray();

最后,我找到了问题所在。 在控制器操作中,我生成了如下url:
Router::url(数组('controller'=>'codebridge','action'=>'edit')生成url
/cake3/erp/codebridge/edit

在camel case
Router::url(数组('controller'=>'CodeBridge','action'=>'edit')中更改控制器名称后生成url'/cake3/erp/code bridge/edit`


这解决了问题

使用拐点类了解常规正确的控制器/表类。首先调试
$this->CodeBridge
实际上是什么(
debug($this->CodeBridge)
)。考虑到错误消息说它是非对象,我假设表实例自动加载机制甚至没有达到,和/或已经有东西分配给
$this->CodeBridge
。这是cargo cult编程。当某些东西应该起作用但不起作用时,最好找出它不起作用的原因,而不是仅仅使用变通方法。遵循这一建议几乎肯定会导致与根本问题相关的其他问题。