4

我有一个用 cakephp 2.0 开发的网站,我有一些相关的表,这里是一个例子:这是我的关系:

成分(id,name)有很多版本

成分属性(id,property_id,version_id)属于属性,版本

properties (id,name,value,group_id,unit_id) 有很多成分_properties 并且属于groups,units

groups (id,name) 有很多属性

units (id,name) 有很多属性

版本 (id,name,ingredient_id,active) 有很多成分属性,属于成分。

我在成分Controller.php 中,我想在哪里检索所有这些Version.active=1数据Version.ingredient_id=2

这是我的查询:

$this->set(
        'ingredient',
        $this->Ingredient->Version->find('all', array(
            'recursive' => 2,
            'conditions' => array(
                'Version.active' => 1,
                'Version.ingredient_id' => 2
             )
        ))
);

我有很多这样的查询,我想知道递归 2 是否是检索我已经解释过的表的所有数据的最佳方法,或者有更快的更好方法(就查询速度而言,不实现) . 我希望有人可以帮助我优化我的代码,因为这个查询有效,但我不知道它是否是检索许多相关表的数据的更好方法。

谢谢。

4

1 回答 1

1

'recursive' => 2如果您想检索这么多数据,这不是最好的使用方法。我相信它会产生太多的查询。可包含行为具有相同的缺点。对我来说最好的方法是取消绑定模型关联并即时构建表连接您可以在此处查看示例。但是您需要了解一些 SQL 才能了解您的工作。

于 2012-09-19T22:19:12.357 回答