0

単一のエントリを選択すると、モデルの関連付けを通じて関連するモデル データを簡単に見つけることができることを知っています。しかし、私がやりたいのは、インデックスページに find('all') を使用するときに、ギャラリーの親指として最初の画像を取得することです。

私の関係 (ギャラリーはアルバムという名前です) は次のとおりです。

 //Album-Model
public $hasMany = array(
    'Picture' => array(
        'className' => 'Picture',
        'foreignKey' => 'album_id',
        'dependent' => true,
        'conditions' => ''
    )
);

と:

    public $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'user_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Album' => array(
        'className' => 'Album',
        'foreignKey' => 'album_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
4

1 に答える 1

2

編集:これはうまくいくはずです。私は自分でテストしました!

クエリの前に、次のレーンを追加して再帰性を指定します。

$this->Albums->recursive = 1;
$this->set('Albums', $this->Album->find('all'));

このようにして、画像データも送信されます。次に、モデルの関連付けで、必要に応じてアルバムの最初の画像のみを返すように指定できます。

アルバム モデルに配列を追加するだけ'limit' => '1',です。hasMany => Comments

次に、ビューで反復処理を行うことができます

foreach($Albums as $Album){
     $Album['Album']; // ALBUMS info do whatever
     $Album['Picture']; // The thumbnail
}

EDIT2:あなたもできることがわかりました

$this->Album->find('all', array('recursive' => 1));
于 2012-08-15T20:13:37.280 に答える