CakePHP hasOne / belongsTo模型关系

时间:2011-11-23 21:56:35

标签: cakephp orm relationship belongs-to has-one

我有一些我试图联系的模特。

一个模型是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在返回的数据中出现,但关联的资源却没有。我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

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

所以我看待它的方式:

项目:

  • hasMany Slide

幻灯片:

  • belongsTo Item(with item_id)
  • belongsTo Asset(with asset_id)

资产:

  • hasMany Slide

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

相关问题