CakePHP:调用其他Model函数

Mik*_*ike 12 cakephp

如何从模型中调用另一个模型中的函数?我不想重复代码.

Vin*_*ins 18

我们可以使用Model关系在另一个模型中调用该函数.例如.

$this->Model->ModelOne->find();
$this->Model->ModelOne->customFunc();
Run Code Online (Sandbox Code Playgroud)

如果模型中没有关系,我们可以使用

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

在模型中使用.在这种情况下,您可以使用

$this->ModelName->function();
Run Code Online (Sandbox Code Playgroud)

直接装载该模型.

  • 从Cake 1.3开始,不确定使用'loadModel'是否正确[当您需要使用不是控制器默认模型或其关联模型的模型时,loadModel函数会派上用场.](http://book.cakephp.org /视图/ 992/loadModel).要从模型加载模型,请使用[ClassRegistry :: init](http://api13.cakephp.org/class/class-registry#method-ClassRegistryinit) (5认同)
  • 这在cakephp 2.3中不起作用(如果在控制器中加载,ofc工作,在模型中没有) (4认同)

Ale*_*and 7

您应该尝试在模型之间建立关系.您可以在此处阅读许多类型的关系......

如果您具有上述关联,则可以使用以下方式访问相关模型:

$this->Model->OtherModel->function();
Run Code Online (Sandbox Code Playgroud)

如果您的模型没有任何关联,您应该使用:

ClassRegistry::init('OtherModel')->function();
Run Code Online (Sandbox Code Playgroud)

你可以在这里查看我的问题,我得到了很好的答案