2017-04-10 53 views
0

兩種形式將顯示在頁面內。來自輔助表格的 數據將更新輔助表格,主表格中的數據將更新主表格。在Cakephp中更新方法中的兩個表

每次添加後,輔助表中的數據應顯示在頁面上,最後主表必須更新,輔助表應更新狀態爲「已完成」。

兩個表可以更新的單一方法的控制器內

+1

[蛋糕2](https://book.cakephp.org/2.0/en/models/saving-your-data.html#saving-related-model-data-hasone- hasmany-belongsto) [cake 3](https://book.cakephp.org/3.0/en/orm/saving-data.html#saving-with-associations) – bill

回答

0

使用內部調整按您的需求,方法

$this->loadModel('YourFirstModel'); 
$this->loadModel('YourSecondModel'); 
$model1 = $this->Model1->get($model1_id); 
$model1 = $this->Model1->patchEntity($model1, $yourDataArray); 
if($this->Model1->save($model1)){ 
    $model2 = $this->Model2->get($model2_id); 
    $model2 = $this->Model2->patchEntity($model2, $yourDataArray); 
    if($this->Model2->save($model2)){ 
     /* yay, I am great */ 
    }else{ 
     /* ask on stackoverflow */ 
    } 
} 

如果您的數據關聯,閱讀本https://book.cakephp.org/3.0/en/orm/saving-data.html#saving-associations

+0

謝謝Mike。在更新主表之前,我需要在同一頁面中顯示輔助表格中的數據。怎麼做 – user2995374

0

您可以分割你的在同一控制器中的兩個不同操作之間進行處理,這些操作可以使用相同的視圖。爲此,您可以使用控制器方法 setAction()。它會將所有數據從一個動作傳遞給另一個控制器。

例如

public function saveSecondary(){ 
    //your stuff 
    if($this->Secondary->save($secondary)){ 
     $this->setAction('saveMain');  
    } 
} 

public function saveMain(){ 
    //your stuff 
    //you can continuing using $secondary and post data here, so use to add 
    //stuff to your view, when the time is come to save main data, you should 
    //use this action by posting the data directly to it (since all secondary 
    //data has alreary been saved) 
    $this->render('savesecondary'); // use the same view 
}