我想把几个模型联系起来。
一个模型是Item
,一个是Slide
,另一个是Asset
。
项下面有多个幻灯片。资产基本上是已经上传的文件(图像,mp3等),幻灯片是资产显示的地方。每张幻灯片有一个资源,但是一个给定的资源可能属于多个幻灯片。幻灯片中定义了asset_id
字段。
我目前有模型定义为:
滑动strong>
class Slide extends AppModel {
var $name = 'Slide';
var $order = array("Slide.order" => "asc");
var $belongsTo = 'Item';
var $hasOne = array(
'Asset' => array(
'className' => 'Asset',
'foreignKey' => 'id',
'dependent' => false
)
);
} // Slide class
资产strong>
class Asset extends AppModel {
var $name = 'Asset';
var $displayField = 'name';
var $belongsTo= array(
'Assetdir' => array(
'className' => 'Assetdir',
'foreignKey' => 'assetdir_id'
),
'Slide' => array(
'className' => 'Slide',
'foreignKey' => 'id'
)
);
} // Asset class
当我加载幻灯片时,我看到它的父元素Item出现在返回的数据中,但关联的资产却没有。我哪里做错了?
实际上我认为这是幻灯片和资产之间一对多的关系。来自模型关联页面:belongsTo:当前模型包含外键。所以,任何模型,如果有一个外键指向另一个,就属于另一个。
所以我的看法是:
单品:
- <
- hasMany幻灯片/gh>
幻灯片:
- belongsTo Item (with item_id)
- belongsTo Asset (with asset_id)
- <
- hasMany幻灯片/gh>
要检索您想要的相关模型,我建议查看Containable行为。