我有一个控制器名称CodeBridgeController
,并且有一个模型表名CodeBridgeTable
。
当我按照以下方式调用CodeBridge表时:
$this->CodeBridge->find('all')->toArray();
这会生成Error: Call to a member function find() on a non-object
File D:\php\htdocs\cake3\erp\src\Controller\CodeBridgeController.php
Line: 25
我认为这是愚蠢的事情,但我在代码中找不到任何错误,为什么在这种情况下没有加载表。
当我这样打电话时,它可以工作。
$codeBridgeTable = TableRegistry::get('CodeBridge');
$results = $codeBridgeTable->find('all')->hydrate(false)->toArray();
可能会产生问题,需要专家建议。
答案 0 :(得分:3)
最后,我找到了问题所在。
在控制器操作中,我生成如下的URL:
生成网址Router::url(array('controller' =>'codebridge','action'=>'edit'));
/cake3/erp/codebridge/edit
在驼峰案例Router::url(array('controller' =>'CodeBridge','action'=>'edit'));
中更改控制器名称后生成url' / cake3 / erp / code-bridge / edit`
这解决了问题
答案 1 :(得分:-1)
要解决此问题,只需在尝试使用之前加载模型:
$this->loadModel("CodeBridge");
$this->CodeBridge->find('all')->toArray();