0

我的 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 匹配,则在后续行中使用该结果。

4

1 回答 1

0

通过 cake 的 api 有几种方法可以做到这一点 - 最简单的方法是将模型的 $recursive 属性设置为 -1 或 0,或者使用模型的 unbind() 函数

于 2013-07-06T20:48:02.003 回答