0

私の CakePHP アプリケーションには、互いに関連付けられた 3 つのモデルがあります。aと an のArticle両方に属するanがあります。次のようなカテゴリの最新記事を照会します。CategoryAuthor

$category = $this->Category->find('first', array(
    'conditions' => array(
        'Category.slug' => $slug
    ),
    'contain' => array(
        'Article' => array(
            'Author'
        )
    )
));

ただし、これは非常に非効率的であることに気付きました。特定の著者の詳細を既に取得している場合でもArticle、見つかったすべてのレコードに対してデータベース テーブルをクエリするからです。authorsしたがって、10 個の記事をフェッチして、それらがすべて同じ著者によるものである場合でも、CakePHP は 10 個の個別の SELECTステートメントを発行します。

必要なクエリのみを発行するように、Containable 動作を使用するときに CakePHP を「よりスマート」にすることはできますか? 私の場合、最初のSELECTステートメントを発行して著者を見つけ、ArticleID が一致する場合はその結果を後続の行に使用します。

4

1 に答える 1