Skip to main content
 首页 » 编程设计

cakephp之我可以在 CakePHP 中的不同模型中使用一个模型吗

2024年04月12日27webabcd

我可以在一个模型中使用另一个模型吗?

例如。

<?php 
class Form extends AppModel 
{ 
    var $name='Form'; 
    var $helpers=array('Html','Ajax','Javascript','Form'); 
    var $components = array( 'RequestHandler','Email'); 
 
    function saveFormName($data) 
    { 
        $this->data['Form']['formname']=$data['Form']['formname']; 
        $this->saveField('name',$this->data['Form']['formname']); 
    }  
 
    function saveFieldname($data) 
    { 
        $this->data['Attribute']['fieldname']=$data['Attribute']['fieldname']; 
    } 
 
} 
?> 

请您参考如下方法:

旧线程,但我要插话,因为我相信答案不完整并且缺乏“为什么”。 CakePHP 具有三种加载模型的方法。虽然只有两种方法可以在 Controller 之外工作,但我将提及这三种方法。我不确定版本的可用性,但这是核心内容,所以我相信它们会起作用。

<强> App::import() 仅查找并 require() 文件,您需要实例化该类才能使用它。您可以告诉 import() 类的类型、名称和文件路径详细信息。

<强> ClassRegistry::init() 加载文件,将实例添加到对象映射并返回实例。这是加载某些内容的更好方法,因为它设置了“蛋糕”内容,就像通过正常方式加载类时会发生的情况一样。您还可以为我发现有用的类名设置别名。

<强> Controller::loadModel() 使用 ClassRegistry::init() 并将模型添加为 Controller 的属性。它还允许使用 $persistModel 对 future 的请求进行模型缓存。这仅适用于 Controller ,如果这是您的情况,我会在其他方法之前使用此方法。