0

私はCakePHP1.2.6を使用しており、次の関係があります。

ショーケースHABTMユーザーbelongsToGalleryitemhasOne Image

Showcaseに関連するすべてのデータを取得しようとしています。そのため、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でした。UserGalleryitem

クエリが深さ3のデータを返さない原因は何ですか?

更新 ショーケースリレーションのセットは、私のプロジェクトでは、上記で説明したよりもはるかに分岐しています。他のすべてのブランチは適切に表示されます。したがって、このブランチの特定の関係に関係していると思いますUser belongsTo Galleryitem

他のブランチにはこれとまったく同じGalleryitem hasOne Image関係のセットが含まれているため、さらに奇妙です。

4

1 に答える 1

2

私は通常、ドット構文を使用します (これは本ではわかりません)。

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

ただし、コードのいずれかで 3 つの深さの例を見つけるのに苦労しています。

于 2010-07-19T15:22:40.190 に答える