1

是否应该调用 cakePHP 中的 unloadModel 之类的函数来卸载使用 loadModel() 函数加载的模型?

我找到了一个卸载方法,

http://api20.cakephp.org/file/Cake/Model/BehaviorCollection.php#method-BehaviorCollectionunload

但它似乎用于行为。我是蛋糕新手。是否有这样的功能,或者当被调用的操作失去范围时它会自动卸载?

还有一个疑问;是根据 MVC 的常规约定使用 loadModel 吗?它有什么不良影响吗?

4

2 回答 2

3

您不需要卸载模型。如果要在整个 Controller 中使用模型,请使用$uses变量:

public $uses = array('MyModel', 'AnotherModel');

如果您只想在特定操作中使用它,请使用loadModel

$this->loadModel('MyModel');

就是这样 - 无需卸载。

不,这不反对 MVC imo,我没有看到任何不利影响。

加载模型很常见。示例 - 我的大多数项目都需要一些“主页”,这些“主页”的数据几乎来自任何模型。在这种情况下,我创建了一个“DashboardsController”,它甚至没有一个表——然后当我需要访问它的数据时,我会加载每个模型。(或者$uses如果我要在所有操作中使用它的数据)。

于 2012-08-10T13:13:17.680 回答
1

不,行为和模型是两个不同的东西。

行为通过钩子添加功能。含义:它们改变了模型中其他方法的工作方式。因此,如果您想自动对数据进行地理编码,请使用地理编码器行为。或者,如果您希望在查找时解密您的结果,您可以添加解密行为。因此,您需要分离/卸载行为的选项,因为您可能不希望在某些时候使用此功能。

模型只是访问数据库或提供包装方法。不必为了使站点的其余部分正常工作而将其删除,因为它们不会改变其他方法的工作方式。

loadModel 只是一种动态加载不自动相关的模型的方法。从需要这些模型的控制器操作中做到这一点完全没问题。

于 2012-08-10T13:14:01.207 回答