我想仅在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
答案 0 :(得分:0)
来自manual(最后一段
默认情况下,updateAll()将自动加入任何belongsTo 支持联接的数据库的关联。为了防止这种情况 暂时解开协会。
所以你必须这样做
$this->Item->unbindModel(
array('belongsTo' => array('Subcategory'))
);
$this->Item->updateAll(
array('Item.alg_update' => 0),
array('Item.id' => 123456),
);