我的 CakePHP 应用程序中有三个相互关联的模型。我有一个Article
属于 aCategory
和 a 的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 匹配,则在后续行中使用该结果。