更新记录而不自动连接到各个belongsTo关联

时间:2018-03-22 10:12:54

标签: cakephp cakephp-2.6

我想仅在items表中更新特定条件的记录,但是当我检查查询时,它会自动添加与其相关联的表的连接。例如:

$this->Item->updateAll(
    array('Item.alg_update' => 0),
    array('Item.id' => 123456),
);

执行以下查询:

UPDATE `DB`.`items` AS `Item` LEFT JOIN   
`DB`.`item_favorites` AS `ItemFavorite` ON  
(`ItemFavorite`.`item_id` = `Item`.`id`) LEFT JOIN  
`DB`.`categories` AS `Category` ON (`Item`.`category_id` =  
`Category`.`id`) LEFT JOIN `DB`.`subcategories` AS `Subcategory` ON  
(`Item`.`subcategory_id` = `Subcategory`.`id`) LEFT JOIN  
`DB`.`item_descriptions` AS `ItemDescriptions` ON  
(`Item`.`description_id` = `ItemDescriptions`.`id`) SET  
`Item`.`alg_update` = 0  WHERE `Item`.`id` = 123456

1 个答案:

答案 0 :(得分:0)

来自manual(最后一段

  

默认情况下,updateAll()将自动加入任何belongsTo   支持联接的数据库的关联。为了防止这种情况   暂时解开协会。

所以你必须这样做

$this->Item->unbindModel(
    array('belongsTo' => array('Subcategory'))
);

$this->Item->updateAll(
    array('Item.alg_update' => 0),
    array('Item.id' => 123456),
);