我有一个控制器名称CodeBridgeController
,并且有一个模型表名称CodeBridgeTable
。当我调用代码桥表时,如下所示:
$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();
什么可能造成问题,需要专家建议。
最后,我找到了问题所在。在控制器操作中,我生成一个如下所示的 url: 生成网址/cake3/erp/codebridge/edit
Router::url(array('controller' =>'codebridge','action'=>'edit'));
在骆驼情况下更改控制器名称后Router::url(array('controller' =>'CodeBridge','action'=>'edit'));
生成网址"/cake3/erp/code-bridge/edit"
这解决了问题
要解决此问题,只需在尝试使用它之前加载模型:
$this->loadModel("CodeBridge");
$this->CodeBridge->find('all')->toArray();