我使用CakePHP 1.3.9但我不能在Controller中使用其他模型。
我使用$this->loadModel('ModelName);
和$this->ModelName->find('all')
- 始终为空。
变量$uses
也不起作用。
为什么它对我不起作用?
我使用了i18n并且必须设置$ locale ...
答案 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()方法?