$uses和$this->loadModel()之间有什么区别?
CakePHPCookbook,第2版。
第61页:
$this->loadModel(‘User’,2);
第62页:
类RecipesController扩展AppController {
public $uses =array(“食谱”,“用户”);
提前感谢!
发布于 2014-10-26 10:28:03
User定义了控制器在默认情况下可以访问的模型,如果您不定义这个模型,它将是该控制器的模型,即UsersController默认将加载用户(以及在AppController的$uses中定义的任何模型)。
loadModel只在调用它的情况下才会这样做,如果您只需要在一个动作中使用该模型,而不需要在其他操作中使用该模型,则情况会更好。
您还可以使用ClassRegistry::init(‘食谱’)->find(‘all’);等等,这将返回模型的单个实例以供一次性使用,但不会将模型添加到对象映射中。
您真正应该问自己的是,为什么要将模型加载到控制器中?理想情况下,您应该在模型之间建立关系,比如如果您在食谱控制器中,您可以调用$this->食谱和$this->食谱->用户。
我发现在Shell中最常见的用法是,默认情况下它没有直接访问模型的权限。
根据ndm的评论编辑
发布于 2014-10-26 08:38:00
根据使用和荷载模型的文档,$uses是一个或多个模型可供整个控制器使用的简单方法,而当您想要访问不在$uses列表中的模型时,则使用loadModel。
https://stackoverflow.com/questions/26570850
复制相似问题