在CakePHP 2.0中加载模型的最佳方法

Bad*_*sie 23 cakephp-2.0

我不确定现在在CakePHP 2.0中加载模型的最佳方法.


问题1

我有一个模型,其中多个数据库字段与另一个模型相关.

customerstable包含字段country_origin,country_residence并且country_study所有这些字段都包含表中的ID countries.

所以在我的客户模型中,我应该如何加载Country模型?


问题2

Controller::loadModel()被弃用或使用此不好做法?我怎么能在控制器中加载模型?


问题3

何时或为什么必须App::uses()在控制器或模型中使用?我不明白的点时,如果使用普通的方法,如车型将反正加载loadModel(),hasOne,hasMany,belongsTo,等.

Chu*_*ess 63

这应该很容易理解.如果您使用的是控制器并且需要加载其他型号,则可以调用:

$this->loadModel('SomeModel');
Run Code Online (Sandbox Code Playgroud)

然后你可以像往常一样调用模型:

$this->SomeModel->read(null, '1');
Run Code Online (Sandbox Code Playgroud)

App::uses用于延迟加载类.因此,您仍然可以使用以下方法加载模型:

App::uses('MyModel', 'Model');
Run Code Online (Sandbox Code Playgroud)

但是你需要以不同的方式调用它:

$MyModel = new MyModel();
$MyModel->read(null, '1');
Run Code Online (Sandbox Code Playgroud)

要么

MyModel::read(null, '1');
Run Code Online (Sandbox Code Playgroud)

这取决于您想要使用它的位置和方式.

  • 我试图从一个行为加载一个模型,都在同一个插件中.在这种情况下,您必须使用:`App :: uses('MyModelName','MyPluginName.Model');`在行为和`App :: uses('MyPluginNameAppModel','MyPluginName.Model');`中调用MyModelName文件. (5认同)