兩種形式將顯示在頁面內。來自輔助表格的 數據將更新輔助表格,主表格中的數據將更新主表格。在Cakephp中更新方法中的兩個表
每次添加後,輔助表中的數據應顯示在頁面上,最後主表必須更新,輔助表應更新狀態爲「已完成」。
兩個表可以更新的單一方法的控制器內
兩種形式將顯示在頁面內。來自輔助表格的 數據將更新輔助表格,主表格中的數據將更新主表格。在Cakephp中更新方法中的兩個表
每次添加後,輔助表中的數據應顯示在頁面上,最後主表必須更新,輔助表應更新狀態爲「已完成」。
兩個表可以更新的單一方法的控制器內
使用內部調整按您的需求,方法
$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
謝謝Mike。在更新主表之前,我需要在同一頁面中顯示輔助表格中的數據。怎麼做 – user2995374
您可以分割你的在同一控制器中的兩個不同操作之間進行處理,這些操作可以使用相同的視圖。爲此,您可以使用控制器方法 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
}
[蛋糕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