私の CakePHP アプリケーションには、互いに関連付けられた 3 つのモデルがあります。aと an のArticle
両方に属するanがあります。次のようなカテゴリの最新記事を照会します。Category
Author
$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
ステートメントを発行して著者を見つけ、Article
ID が一致する場合はその結果を後続の行に使用します。