CakePHP在2x中的深层次关联
我有多个相互关联的表模型名称如下:CakePHP在2x中的深层次关联,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,我有多个相互关联的表模型名称如下: 菜单 子菜单 选择权 子菜单具有菜单\u id 选项具有子菜单\u id 我想显示菜单>子菜单>选项 如何进行三级关联?首先,您必须在模型中设置正确的关联。在菜单中型号(我假设您设置了正确的外键): 在子菜单中: public $hasMany = array('Option'); public $belongsTo= array('Menu'); 在选项中型号: public $belongsTo= array('SubMenu'); 然后您可以这样做(
菜单\u id
选项具有子菜单\u id
我想显示菜单>子菜单>选项
如何进行三级关联?首先,您必须在模型中设置正确的关联。在
菜单中
型号(我假设您设置了正确的外键):
在子菜单中
:
public $hasMany = array('Option');
public $belongsTo= array('Menu');
在选项中
型号:
public $belongsTo= array('SubMenu');
然后您可以这样做(在模型中):
使用Containable
并限制要使用的字段
更多信息。您最好的选择是使用行为 我知道您的关系已经在模型类中定义 在
菜单控制器
操作中,添加
$this->Menu->contain(array(
'SubMenu'=>array(
'Option'
)
));
就在之前
$menus=$this->Menu->find();
不要忘记在模型中加载行为:
class Menu extends AppModel {
public $actsAs = array('Containable');
}
或者通过呼吁采取行动:
$this->Menu->Behaviors->load('Containable');
$this->Menu->bindModel(数组('hasMany'=>array('submenu'=>array('className'=>'submenu','foreignKey'=>'Menu\u id')))$this->submenu->bindModel(数组('hasMany'=>array('option'=>array('className'=>'option','foreignKey'=>'submenu\u id')));'
class Menu extends AppModel {
public $actsAs = array('Containable');
}
$this->Menu->Behaviors->load('Containable');