我是cakephp的新手并尝试使用控制台工具生成一些CRUD操作。除了一张桌子(最大的)之外,它的工作正常。
尝试添加新元素时,会返回:
错误:在非对象上调用成员函数find() 文件:C:\ wamp \ www \ cakephp \ app \ Controller \ ChantiersController.php
行:50
这是第50行及以后的行:
$programs = $this->Chantier->Program->find('list');
$etats = $this->Chantier->Etat->find('list');
$types = $this->Chantier->Type->find('list');
$champsLibres = $this->Chantier->ChampsLibre->find('list');
$feuillesDeRoutes = $this->Chantier->FeuillesDeRoute->find('list');
$directionsPilotes = $this->Chantier->DirectionsPilote->find('list');
$this->set(compact('programs', 'etats', 'types', 'champsLibres',
'feuillesDeRoutes', 'directionsPilotes'));
答案 0 :(得分:14)
TLDR /答案:
您可以修复关联或加载模型,然后移除通话(->Chantier
部分:
$this->loadModel('Program');
$programs = $this->Program->find('list');
详情/说明:
该错误基本上意味着您尝试在未加载到控制器中的模型上调用find()
。
默认情况下,会加载Controller的模型。而且,正如您所做的那样,您可以使用模型来加载模型。 (如果关联设置正确)。
例如:
//ChantiersController
$this->Pizza->find('all'); //ERROR - Pizza model isn't loaded
要解决此问题,只需在尝试使用之前加载模型:
$this->loadModel("Pizza");
$this->Pizza->find('all'); //All is good - loaded on the line above
在您的情况下,由于您似乎正在使用与Chantier
模型的关联来查找其他模型,因此两种模型之间的关联可能不正确。
答案 1 :(得分:0)
如果您不想使用loadModel()函数,则可以定义
var $uses = array('Program');
您还可以在数组中提及其他型号名称