Sql CakePHP重复相同的查询

Sql CakePHP重复相同的查询,sql,cakephp,containable,Sql,Cakephp,Containable,我有一个模型结构:类别有许多产品有许多库存项目属于仓库、制造商 我使用此代码获取数据,使用Containeable能够在关联模型中进行更深入的筛选: $this->Category->find('all', array( 'conditions' => array('Category.id' => $category_id), 'contain' => array( 'Product' => array(

我有一个模型结构:类别有许多产品有许多库存项目属于仓库、制造商

我使用此代码获取数据,使用Containeable能够在关联模型中进行更深入的筛选:

$this->Category->find('all', array(
        'conditions' => array('Category.id' => $category_id),
        'contain' => array(
            'Product' => array(
                'Stockitem' => array(
                    'conditions' => array('Stockitem.warehouse_id' => $warehouse_id),
                    'Warehouse',
                    'Manufacturer',
                )
            )
        ),
        )
    );
数据结构返回得很好,但是,我得到了多个重复查询,例如,有时基于数据集的一行中有数百个这样的查询

SELECT `Warehouse`.`id`, `Warehouse`.`title` FROM `beta_warehouses` AS `Warehouse` WHERE `Warehouse`.`id` = 2
基本上,在构建数据结构时,Cake是一次又一次地从mysql获取每一行的数据。我们有几千行的数据集,我觉得这会影响性能。是否可以使其缓存结果而不重复相同的查询?

尝试以下操作:

$this->Product->find('all', array(
    'conditions' => array('Category.id' => $category_id, 'Stockitem.warehouse_id' => $warehouse_id),
    'contain' => array(
        'Category'
        , 'Stockitem' => array(
            'Warehouse'
            , 'Manufacturer'
        )
    ),
));
如果删除Warehouse和Manufacturer,您将发现Cakephp只执行一个查询

或者,您可以为复杂查询创建数据库视图。

尝试以下操作:

$this->Product->find('all', array(
    'conditions' => array('Category.id' => $category_id, 'Stockitem.warehouse_id' => $warehouse_id),
    'contain' => array(
        'Category'
        , 'Stockitem' => array(
            'Warehouse'
            , 'Manufacturer'
        )
    ),
));
如果删除Warehouse和Manufacturer,您将发现Cakephp只执行一个查询


或者,您可以为复杂查询创建数据库视图。

where子句中的未知列“Stockitem.warehouse\u id”where子句中的未知列“未知列”Stockitem.warehouse\u id”