2010-01-08 56 views
1

我創建了一個函數,它有一個無限循環和最後的延遲,以確保它每秒只執行一次。保存在循環中

此功能爲殼類和它的目標是要保存/更新記錄在三個不同的表,我使用命令「蛋糕的className」

我的問題是invoque它從控制檯線:

我在控制檯(Ctrl + C)停止循環,只有最後一條記錄保存在數據庫中。

我不知道是否有交易中的問題,我試圖在保存和提交之前使用begin(),但問題仍然存在。

的代碼是這樣的:

$this->T1->begin(); 
$this->T2->begin(); 
$this->T3->begin(); 

if ($this->T1->save((array (
    'Field1' => $val1, 
    'Field2' => $val2, 
    'Field3' => $val3))) 
    && $this->T2->save(array (
     'Field1' => $val4, 
     'Field2' => $val5, 
     'Field3' => $val6))) 
    && $this->T3->saveField('Field1', $val7)) 
{ 
     $this->T1->commit(); 
     $this->T2->commit(); 
     $this->T3->commit(); 

     echo 'success message'; 
} 
+0

這不是一個循環,但一個多條件語句 – mark 2013-05-06 12:06:14

回答

3

這可能是因爲該ID仍然存在於每一個循環保存時,因爲數據被合併,這往往發生在車型。

請嘗試以下操作重置模型,使其不會加載之前的數據。

$this->Sale->create(false); 
$this->Bidagent->create(false); 
$this->Licitation->create(false); 

從您的代碼段,雖然我不知道什麼T1,T2和T3 ...如果他們都是模特那麼他們需要同樣的$this->Model->create(false);

參考:

+0

忘記編輯... T1,T2和T3的銷售Bidagent和Licitation .. 。謝謝你的工作完美...只需要把它放在授權模型上,原因是創建新行的唯一方法,其他只是更新。謝謝 – Canastro 2010-01-08 01:39:06