Cakephp使用模型而不定义模型文件

时间:2013-07-18 17:54:32

标签: php cakephp model

我是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

2 个答案:

答案 0 :(得分:1)

将其更改为:

 $test = $this->Test->find('all');

另外,请检查cakephp model and database conventions

答案 1 :(得分:0)

模型文件是可选的

蛋糕会user an AppModel instance if there is no model file found

  

如果找不到/ app / Model中的相应文件,CakePHP将为您动态创建一个模型对象。

因此,对this->Article的引用将是AppModel的实例,因为模型在$uses变量中声明,但模型文件不存在。

这并不意味着$ this-> RandomModel正常工作

如问题所示,引用随机模型只会产生以下错误:

  

在非对象上调用成员函数find()

这是可以预料到的,因为控制器对问题中的代码中的Test模型一无所知。

可选的模型文件处理并不意味着您可以通过期望它作为Controller类属性存在来引用任何模型。 $uses的存在是为了告诉控制器需要了解哪些模型。如果仅在特定情况下需要模型,则loadModel用于此目的:

$this->loadModel('Test');
$stuff = $this->Test->find('all');