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');