我的CakePHP应用程序中有三个相互关联的模型。我的Article
属于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
语句来查找作者,如果ID匹配,则在后续Article
行中使用该结果。
答案 0 :(得分:0)
通过cake的api有几种方法可以做到这一点 - 最简单的方法是将Model的$ recursive属性设置为-1或0,或者使用Model的unbind()函数