我有多个相互关联的表。模型名称如下:
- 菜单
- 子菜单
- 选项
子菜单具有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'));'