CakePHP不支持加载模型吗?

时间:2011-05-28 12:31:05

标签: cakephp models

我使用CakePHP 1.3.9但我不能在Controller中使用其他模型。

我使用$this->loadModel('ModelName);$this->ModelName->find('all') - 始终为空。

变量$uses也不起作用。

为什么它对我不起作用?


我使用了i18n并且必须设置$ locale ...

3 个答案:

答案 0 :(得分:4)

你的意思是数据集是空的吗?如果未加载模型,则您应该无法调用$this->ModelName->find(),因为$this->ModelName将为null。它会抛出错误吗?您的使用方法是正确的,如手册中所述:http://book.cakephp.org/view/992/loadModel

您也可以

App::import('Model', 'ModelName');
$model = new Model();

但我猜你当前的结果集是空的,而不是模型本身没有设置。

您是否尝试过查看$this->ModelName实际包含的内容?执行以下操作并在此处发布

pr($this->ModelName)

答案 1 :(得分:1)

将(未关联的)模型放入$uses数组中被认为是不好的做法。

根据您的目的,您可能能够使用可包含的行为。

$this->User->Post->find('all');

如果没有,您应该可以使用loadModel

$this->loadModel('Article');
$recentArticles = $this->Article->find('all', array('limit' => 5));

引用Cake:

  

当您需要使用不是控制器默认模型或其关联模型的模型时,loadModel函数会派上用场。

答案 2 :(得分:0)

JohnP和Ross是对的。如果pr($this->ModelName)适合您,Controller :: loadModel()显然正常工作,而不是您的问题。

正如他们所提到的,你可能遇到了麻烦,因为数据根本就不在数据库中。或者您的查询可能有问题。您是否尝试检查CakePHP生成的查询并尝试直接通过MySQL命令行查询数据库(假设您使用的是MySQL)?

或者你有没有机会重载Model :: find()方法?