CakePHP имеет одно/принадлежит к модели отношений


У меня есть несколько моделей, которые я пытаюсь связать.

Одна модель 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

Когда я загружаю слайд, я вижу, что его родительский элемент, элемент, появляется в возвращаемых данных, но связанного ресурса нет. Что я здесь делаю не так?

Author: theraccoonbear, 2011-11-24

1 answers

На самом деле я думаю, что это соотношение "один ко многим" между слайдом и активом. Со страницы Ассоциации моделей: Принадлежит: текущая модель содержит внешний ключ. Таким образом, любая модель, имеющая внешний ключ к другой , принадлежит другой модели.

Итак, как я это вижу:

Пункт:

  • Хасмани Слайд

Слайд:

  • Принадлежит элементу (с идентификатором элемента)
  • Принадлежит активу (с идентификатор актива)

Актив:

  • Хасмани Слайд

Для получения связанных моделей, которые вы хотите, я бы предложил взглянуть на Содержащееся поведение.

 4
Author: brism, 2014-03-03 05:49:54