1

間接的に関連するモデルからの特定の条件に基づいて、D フィルタリング結果と呼ばれるモデルからいくつかのデータをページ分割しようとしています。私のモデルは次のようになります。

D->C->B->A (各 -> が属する)

A.client = ? の D のレコードをページ付けしたい。

これは、containable を使用して可能ですか? これを行うための推奨される方法は何ですか (モデル D のコンテナブルを使用すると、ページ分割された各アイテムのクエリが発生し、非効率的と思われます)?

4

1 に答える 1

2

はい、おそらく Containable を使用するとうまくいきます。例えば

// function in AController

$this->paginate = array(
    'conditions' => array('A.client' => 'foo'),
    'contain' => array(
        'B' => array(
            'C' => array(
                'D'
            )
        )
    )
);

CakePHP は、A から B、B から C、C から D を結合します。おそらく、4 モデル離れたデータを取得する最も簡単な方法だと思います。非効率性については、sql_dump 要素を「explain plan」と組み合わせて使用​​して、クエリでインデックスが適切に使用されるようにすることができます。

于 2011-02-23T08:07:21.810 に答える