CakePHP关联在2x中更深层次

时间:2015-12-11 11:42:06

标签: php cakephp cakephp-2.0

我有多个表彼此关联的模型名称如下:

  1. 菜单
  2. SubMenu
  3. SubMenu有menu_id

    选项包含submenu_id

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

    如何进行3级关联?

3 个答案:

答案 0 :(得分:2)

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

我知道您的关系已在模型类中定义。

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

答案 1 :(得分:0)

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

public $hasMany = array('SubMenu');
SubMenu中的

public $hasMany = array('Option');
public $belongsTo= array('Menu');
Option模型中的

public $belongsTo= array('SubMenu');

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

$this->find(...);

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

更多关于model associations

答案 2 :(得分:0)

$ this->菜单 - > bindModel(数组(' hasMany' =>数组('子菜单' =>数组(' className' =>'子菜单',' foreignKey' =>' menu_id'))));
$ this-> submenu-> bindModel(array(' hasMany' =>数组)'选项' =>数组(' className' => '选项',' foreignKey' =>' submenu_id')))); '