cakephp查询与许多表

时间:2012-09-19 06:25:14

标签: php cakephp cakephp-appmodel

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

  

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

     

ingredient_properties(id,property_id,version_id)属于   属性,版本

     

属性(id,name,value,group_id,unit_id)有很多   ingredient_properties并属于组,单位

     

groups(id,name)有很多属性

     

单位(id,name)有很多属性

     

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

我在ingredientController.php中,我想要检索Version.active=1Version.ingredient_id=2所有这些数据。

这是我的疑问:

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

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

感谢。

1 个答案:

答案 0 :(得分:1)

如果您想要检索如此多的数据,这不是使用'recursive' => 2的最佳方式。我相信它会产生太多查询。可容忍的行为具有相同的缺点。对我来说最好的方法是动态unbind models associationsconstruct table joins。您可以查看示例here。但是你需要知道一些SQL才能理解你的工作。