4

我有几个模型要尝试关联。

一种型号是Item,一种是Slide,另一种是Asset

项目下方有多个幻灯片。资产基本上是已上传的文件(图像、mp3 等),幻灯片是显示资产的地方。每张幻灯片都有一个资产,但给定的资产可能属于多张幻灯片。幻灯片asset_id定义了一个字段。

我目前将模型定义为:

滑动

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

资产

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 在返回的数据中出现,但关联的资产不是。我在这里做错了什么?

4

1 回答 1

4

实际上我认为这是 Slide 和 Asset 之间的一对多关系。从模型关联页面belongsTo:当前模型包含外键。因此,任何具有另一个外键的模型都属于另一个模型。

所以我看到它的方式:

物品:

  • hasMany 幻灯片

滑动:

  • 属于项目(带有 item_id)
  • 属于资产(带有asset_id)

资产:

  • hasMany 幻灯片

为了检索您想要的关联模型,我建议查看Containable behavior

于 2011-11-23T22:20:18.733 回答