2011-03-31 59 views
0

我有以下代码。使用no join。蛋糕php

var $uses = array('TABLE1','TABLE2','TABLE3'); 

function test() { 

$this->Table1->updateAll(
     array('Table1.field1' => 'some value'), 
     array('Table1.field1 ' => 'some condition') 
      ); 
...... 
..... 

问题是,当我尝试更新只有一个表...表1,它与其他表连接。

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

首先,停止使用$用途。它只会导致你比需要更多的痛苦。

避免连接使用Model::unbindModel(array('relationType' => array('Relation'))http://book.cakephp.org/view/1045/Creating-and-Destroying-Associations-on-the-Fly

+0

请参阅编辑部分。我试过,但仍然加入 – Autolycus 2011-04-01 01:14:51

+0

这可能是准确的 - 但说明某些东西是“破碎”或“不起作用”,没有任何细节不会对您有所帮助,也不会帮助其他人理解您的问题。提供详细信息,什么打破了,哪个文件,您当时在做什么,您期望发生什么,发生了什么,您是否看到错误消息。尽可能显示您正在使用的相关代码。然而,要简洁 - 没有人愿意阅读战争与和平,如果有几个关键细节,你可以传达你的问题http://book.cakephp.org/view/770/How-to-ask-a-question#Broken-771 – dogmatic69 2011-04-01 09:09:39

+1

它的'unbindModel()'不'unBindModel' – ptica 2013-02-15 17:38:24

2

试试你的recursive级别设置为-1。我不确定这是否会影响更新通话,但值得一试。

$this->Table1->recursive = -1; 
$this->Table1->updateAll(...); 
+0

这对Cake 1.3.1不起作用 – MotsManish 2013-11-28 10:02:39

+0

这不适用于更新 – Junior 2016-02-03 17:27:28