-1

HABTM関係があり、次の製品配列のような製品テーブルからカテゴリテーブルのネストされたデータを取得したいと思います。

array(
    (int) 0 => array(
        'id' => (int) 1,
        'name' => 'a',
        'categories' => array(
            (int) 0 => array(
                'id' => (int) 1
            ),
            (int) 1 => array(
                'id' => (int) 2
            )
        )
    ),
    (int) 1 => array(
        'id' => (int) 2,
        'name' => 'b',
        'categories' => array(
            (int) 0 => array(
                'id' => (int) 1
            )
        )
    )
)

これはケーキで可能ですか?

編集:私は私がやりたいことをさらに説明しようとします。

我慢してください、私はケーキに不慣れで、それをつかむのに苦労しています。

'product'テーブルがあります:

    public $hasAndBelongsToMany = array(
        'Category' => array(
            'className' => 'Category',
            'joinTable' => 'categories_sculptures',
            'foreignKey' => 'sculpture_id',
            'associationForeignKey' => 'category_id',
            'unique' => 'keepExisting'
        )
    )

およびカテゴリテーブル:

    public $hasAndBelongsToMany = array(
        'Sculpture' => array(
            'className' => 'Sculpture',
            'joinTable' => 'categories_sculptures',
            'foreignKey' => 'category_id',
            'associationForeignKey' => 'sculpture_id',
            'unique' => 'keepExisting'
        )
    );

およびカテゴリ製品テーブル:

    public $belongsTo = array(
    'Category' => array(
        'className' => 'Category',
        'foreignKey' => 'category_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Sculpture' => array(
        'className' => 'Sculpture',
        'foreignKey' => 'sculpture_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

彫刻のビューテーブルを作成し、各行に各彫刻が含まれるカテゴリ(複数の場合もあります)を表示したいと思います。私はケーキが初めてなので、これをどうやってやるのかわかりません。mysqlにクエリを実行するだけの場合は、group_concatまたはネストされたselectを使用して、または最初の配列をループし、sculptureキーでcategory_sculptureテーブルにクエリを実行し、結果を最初の配列に追加することで、この情報を取得できます。しかし、私はこの結果をケーキのようにするための最良の方法を知りたいです。

4

1 に答える 1

0

私は自分のニーズに対する答えを見つけました:

$this->Sculpture->recursive = 1;
于 2012-10-15T15:31:10.353 に答える