0

私はテーブルを持っています:categoriesHABTM sculptureshasManyimages

fromは、CategoriesController#find()次のような配列を生成します。

array(
    'Category' => array(
        'id' => '3',
        'name' => 'Modern',
    ),
    'Sculpture' => array(
        (int) 0 => array(
            'id' => '25',
            'name' => 'Ami',
            'material' => 'Bronze',
            'CategoriesSculpture' => array(
                'id' => '18',
                'category_id' => '3',
                'sculpture_id' => '25'
            )
        ),
         (int) 1 => array(
                'id' => '26',
                'name' => 'Charis',
                'material' => 'Bronze',
                'CategoriesSculpture' => array(
                    'id' => '19',
                    'category_id' => '3',
                    'sculpture_id' => '26'
                )
            )
    )
)

可能であれば、彫刻に関連する画像も配列に取得できるようにしたいですか?

4

2 に答える 2

1

これを行う簡単な方法は、呼び出すときに再帰を2に設定することですfind())。これによりfind()、関連付けられているすべてのモデルと、関連付けられているモデルに関連付けられているモデルを接続するように指示されます。

ただし、このアプローチではデータセットが非常に大きくなる可能性があるため、より深い関連付けを含める場合は、包含可能な動作を使用することをお勧めします。

于 2012-10-18T16:23:05.293 に答える
0

CakePHPのContainableBehaviorを使用してください。それについて読み、指示に従うと、検索結果は次のようになります。

$this->Category->find('all', array(
    'contain' => array(
        'Sculpture' => array(
            'Image'
        )
    )
));

カテゴリモデルでは、次のものが必要です。

public $actsAs = array('Containable');
public $recursive = -1; //can set this in many places, but it must be -1 for the Containable find to work.
于 2012-10-18T16:57:51.563 に答える