我处于需要从6个模型中获取数据的情况。我不能使用协会,因为他们没有关系。那么我应该使用 $uses
或 request action
或任何其他解决方案
答案 0 :(得分:2)
我建议您使用
ClassRegistry::init("model_name")
或
loadModel("model_name")
代替。
E.g。
使用User
模型
$this->User = ClassRegistry::init('User');
或者
$this->loadModel('User');
然后你可以做一些像
这样的查询$this->User->find("all");
答案 1 :(得分:2)
如果您只需要一个find
来电,并且需要关联,我建议您使用bindModel
,请参阅Creating-and-Destroying-Associations-on-the-Fly。
答案 2 :(得分:1)
您可以尝试使用$,或者,如果您只想在需要的时间和地点加载模型,可以使用loadModel(http://book.cakephp.org/view/845/loadModel)。 LoadModel比$ use更好,性能更好。
答案 3 :(得分:1)
我不同意特拉维斯。使用loadModel要好得多,然后您可以确保在需要时加载所需的内容。谁能说你不会扩展模型以包含不需要所有其他模型的方法?
剪切和粘贴是程序员性能的重要推动力。
答案 4 :(得分:1)
正如其他人推荐的那样,您应该使用Controller::loadModel()
。
另外,我建议您制作类似YourController::_loadMyMegaData()
的内容,它会加载所有必要的模型并设置您的数据。这样可以避免意外加载这些模型,并在以后的块中省去任何模型。
另外,尽可能避免使用requestAction()
,这不仅是丑陋的,而且还会受到性能影响。 (它当然有它的使用,但这种情况不会经常发生:))
答案 5 :(得分:0)
您可以使用以下内容:
$this->loadModel('ModelName');
$this->ModelName->find();
如果您只检索单个字段,则可以使用虚拟字段