cakephp $使用或请求操作

时间:2010-09-23 11:12:57

标签: php cakephp

我处于需要从6个模型中获取数据的情况。我不能使用协会,因为他们没有关系。那么我应该使用 $uses request action 或任何其他解决方案

6 个答案:

答案 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();

如果您只检索单个字段,则可以使用虚拟字段