1

私はツリーの振る舞いを使用しており、-> find('threaded'、...)を介してクエリを実行すると、期待どおりにツリーが返されます。

しかし、追加の結合が発生するようにしたいので、次のようになります。

$data = $this->Category->find('threaded', array(
    'joins' => array(
        array('table' => 'videos',
            'alias' => 'Video',
            'type' => 'LEFT',
            'conditions' => array(
                'Category.id = Video.category_id',
            )
        )
    )
));

カテゴリhasManyVideoですが、ビデオはツリーではなく、関連しているだけです。

そのためにスレッドクエリを使用できますか?

4

1 に答える 1

1

「スレッド化された」出力を生成するには、1)find('all)を呼び出し、次に2)結果の配列をSet :: nest()関数に入れます。

したがって、標準の検索とカスタム結合を使用して出力を取得してから、Set::nest

(注:Cake 2でHash置き換えられましたが、Cakeは引き続き内部で使用されます。両方とも今のところ機能します。) SetSetHash::nest

したがって、Cakeを見るとmodel.php、nest関数は次のように呼び出されます。

return Set::nest($results, array(
            'idPath' => '/' . $this->alias . '/' . $this->primaryKey,
            'parentPath' => '/' . $this->alias . '/' . $parent
        ));

それを通話のテンプレートとして使用します。データの場合、次のようになります。

return Set::nest($results, array(
            'idPath' => '/Category/id',
            'parentPath' => '/Category/parent_id'           ));
于 2012-11-01T23:44:53.170 に答える