不使用加入。蛋糕PHP

时间:2011-03-31 19:17:30

标签: cakephp

我有以下代码。

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')));

2 个答案:

答案 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(...);