我可以从 CakePHP 中的控制器访问哪些模型


Which models can I access from a controller in CakePHP?

>假设我有一个经典的 Post 模型,并且我也创建了一个作者模型。

我有一些基本问题:

  1. Post对象是在PostsController中自动创建的?

  2. 为了创建一个帖子的实例 AuthorsController,是唯一的方法

$this->Post = ClassRegistry::init('Post');

请注意,通过执行" $this->Post",我假设将在此行中创建Post变量。我说的对吗?

提前谢谢你!

查看模型关联。如果您的关联设置正确,您将能够

$this->Author->Post

以从作者控制器访问发布模型。如果模型不相关,但您仍然需要访问它,则可以使用 $uses 数组执行此操作。

就你的第一个问题而言,你是对的。所有控制器都扩展了 Appcontroller,该控制器导入/lib/中的默认蛋糕控制器类。您可以在 cakePHP 控制器文件中的第 376 行看到,在加载了 $uses 数组中给出的所有模型之后,将加载名称等于类名的模型。

使用数组中的所有模型

您可以访问在 uses 属性中声明的所有模型的$this->MmodelName - 如果未声明此属性,则默认为与控制器对应的模型 - 即 PostsContorller -> Post模型。

$uses中声明为在第一次引用时创建/实例化的模型 - 即它们是延迟创建的。