我有多个表彼此关联的模型名称如下:
SubMenu有menu_id
,
选项包含submenu_id
我想显示菜单> SubMenu>选项。
如何进行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')))); '