cakephp $ uses,$ this-> loadModel

时间:2014-10-26 07:39:31

标签: cakephp controller

$ uses和$ this-> loadModel()有什么区别?
CakePHPCookbook,第2版。
第61页:
$ this-> loadModel('User',2);
第62页:
class RecipesController扩展AppController {
public $ uses = array('Recipe','User');

提前谢谢!

2 个答案:

答案 0 :(得分:1)

默认情况下,使用定义控制器可以访问的模型,如果您没有定义它,那么它将是该控制器的模型,即UsersController将默认加载User(以及AppController中定义的任何模型)。 s $使用)。

loadModel只会在调用它的地方执行相同的操作,如果您只需要在一个操作中使用模型而不是其他操作,则更好。

您还可以使用ClassRegistry :: init(' Recipe') - > find(' all');等将返回单个模型的单个实例,但不会将模型添加到对象图中。

你应该问自己为什么要将模型加载到控制器中?理想情况下,您应该在模型之间建立关系,例如,如果您在配方控制器中可以调用$ this-> Recipe和$ this-> Recipe-> User。

我发现使用最常见于Shell中,默认情况下它无法直接访问模型。

按照ndm的评论编辑

答案 1 :(得分:0)

根据usesloadmodel的文档,$uses是让整个控制器可以使用一个或多个模型的简单方法,并且在loadModel时使用$uses您希望有权访问不在{{1}}列表

中的模型