我有以下代码。
var $uses = array('TABLE1','TABLE2','TABLE3');
function test() {
$this->Table1->updateAll(
array('Table1.field1' => 'some value'),
array('Table1.field1 ' => 'some condition')
);
......
.....
问题是当我尝试只更新一个表... Table1时,它会与其他表连接。
UPDATE
`Table1`
LEFT JOIN
`Table2`
ON
(`Table1`.`id` = `Table2`.`uid`)
LEFT JOIN
`Table3`
ON
(`Table1`.`Table3_id` = `Table3`.`id`)
SET
`Table1`.`field1` = 1
WHERE
some condition.......
我如何才能加入该表并仅在Table1
上运行更新?
修改
我用过这个但是没有用:
$this->Table1->unBindModel(array(hasMany => array('Table2', 'Table3')));
答案 0 :(得分:2)
首先,停止使用$ uses。它只会给你带来比你需要的更多痛苦。
避免联接使用Model::unbindModel(array('relationType' => array('Relation'))
http://book.cakephp.org/view/1045/Creating-and-Destroying-Associations-on-the-Fly
答案 1 :(得分:2)
尝试将recursive
级别设置为-1。我不确定这是否会影响Update调用,但值得一试。
$this->Table1->recursive = -1;
$this->Table1->updateAll(...);