Контейнерное поведение не возвращается из глубины 3 - CakePHP - PullRequest
0 голосов
/ 19 июля 2010

Я использую CakePHP 1.2.6 и имею следующие отношения:

Витрина HABTM Пользователь принадлежит Галерее имеет одно изображение

Я пытаюсь получить все данные, относящиеся к витрине, а также для всех ее пользователей с помощью Galleryitem -> Image. Я использую следующий запрос:

$showcase = $this->Showcase->find('first',
    array('conditions'=>array('Showcase.id'=>$id),
        'contain'=> array(
            'User' => array(
                'Galleryitem' => array(
                    'Image'
                )
            )
        )
    )
);

Это возвращает и пустой массив Galleryitem и, следовательно, Image записей вообще. Если я попробую следующее:

$showcase = $this->Showcase->User->find('first',
    array(
        'contain'=> array(
            'Galleryitem' => array(
                'Image'
            )
        )
    )
);

Я получил некоторые данные о Image. Кажется, здесь играет роль глубина.

Другими факторами, которые пришли на ум, были отношения belongsTo между User и Galleryitem.

Почему мой запрос не возвращает данные с глубины 3?

Update Набор отношений Showcase в моем проекте гораздо более разветвлен, чем я объяснил выше. Все остальные ветви правильно отображаются. Поэтому я думаю, что это связано с конкретными отношениями в этой отрасли, User belongsTo Galleryitem.

Как ни странно, потому что другие ветви содержат этот же набор отношений Galleryitem hasOne Image.

1 Ответ

2 голосов
/ 19 июля 2010

Обычно я использую точечный синтаксис (который я не вижу в книге):

$this->Showcase->contain('User','User.GalleryItem','User.GalleryItem.Image');
$showcase = $this->Showcase->User->find('first');

хотя я пытаюсь найти пример из трех глубин в любом из моих кодов.

...