我是cakephp的新手,并尝试自定义蛋糕应用程序。
我看到他们在app / models文件夹中没有模型类文件的情况下使用模型
我认为从表到模型有自动映射
我正在分享一些有用的代码行
public $uses = array('LinkEmperorCampaignDetail','Configuration','Article');
$this->paginate = array(
'conditions' => $condition,
'limit' => 10
);
$this->set('articles', $this->paginate('Article'));
正如您已经看到它使用$ uses变量导入文章模型,数据库中有一个表“articles”,但app / models中没有文件Article.php。我删除了缓存文件夹并禁用了缓存。
我已经检查过它是否是自动的,通过创建表“test”并使用此代码
$test=$this->test->find('all');;
var_dump($test);exit();
但是收到此错误错误:在非对象上调用成员函数find()
请让我知道这是怎么回事
谢谢, Lajeesh
答案 0 :(得分:1)
答案 1 :(得分:0)
蛋糕会user an AppModel instance if there is no model file found:
如果找不到/ app / Model中的相应文件,CakePHP将为您动态创建一个模型对象。
因此,对this->Article
的引用将是AppModel
的实例,因为模型在$uses
变量中声明,但模型文件不存在。
如问题所示,引用随机模型只会产生以下错误:
在非对象上调用成员函数find()
这是可以预料到的,因为控制器对问题中的代码中的Test
模型一无所知。
可选的模型文件处理并不意味着您可以通过期望它作为Controller类属性存在来引用任何模型。 $uses
的存在是为了告诉控制器需要了解哪些模型。如果仅在特定情况下需要模型,则loadModel用于此目的:
$this->loadModel('Test');
$stuff = $this->Test->find('all');