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
Когда я загружаю слайд, я вижу, что его родительский элемент, элемент, появляется в возвращаемых данных, но связанного ресурса нет. Что я здесь делаю не так?
1 answers
На самом деле я думаю, что это соотношение "один ко многим" между слайдом и активом. Со страницы Ассоциации моделей: Принадлежит: текущая модель содержит внешний ключ. Таким образом, любая модель, имеющая внешний ключ к другой , принадлежит другой модели.
Итак, как я это вижу:
Пункт:
- Хасмани Слайд
Слайд:
- Принадлежит элементу (с идентификатором элемента)
- Принадлежит активу (с идентификатор актива)
Актив:
- Хасмани Слайд
Для получения связанных моделей, которые вы хотите, я бы предложил взглянуть на Содержащееся поведение.