CakePHP关联的2倍深度


CakePHP assocations deeper level in 2x

我有多个相互关联的表。模型名称如下:

  1. 菜单
  2. 子菜单
  3. 选项

子菜单具有menu_id

选项具有submenu_id

我想显示菜单>子菜单>选项。

我该如何进行三级关联?

您的最佳选择是使用Containable行为。

我知道您的关系已经在Model类中定义了。

MenuControllers操作中,添加

    $this->Menu->contain(array(
        'SubMenu'=>array(
            'Option'
        )
    ));

就在之前

$menus=$this->Menu->find();

不要忘记在模型中加载行为:

class Menu extends AppModel {
    public $actsAs = array('Containable');
}

或者通过调用您的行动:

$this->Menu->Behaviors->load('Containable');

首先必须在模型中设置正确的关联。在Menu模型中(我假设您设置了正确的外键):

public $hasMany = array('SubMenu');

SubMenu:中

public $hasMany = array('Option');
public $belongsTo= array('Menu');

Option模型中:

public $belongsTo= array('SubMenu');

然后你可以这样做(在模型中):

$this->find(...);

使用Containable并限制要使用的字段。

更多关于模型关联的信息。

$this->Menu->bindModel(数组('hasMany'=>数组('submenu'=>数组)('className'=>'submenu','foreignKey'=>'Menu_id')))
$this->submenu->bindModel(array('hasMany'=>array('option'=>array['className'=>'option','wingKey'=>'submenu_id'));'