2017-02-09 141 views
0

協會實體我有一個JSON對象,我將它保存使用CakePHP 3.保存JSON對象與使用CakePHP 3

首先需要post &我有4個表,因爲在此圖像中TABLES

比方說,供應商會購買一些產品,因此我需要填寫purchase記錄和關聯表products_purchases,其中將包含在該purchase期間購買的產品的所有記錄。

我將使用一些JavaScript動態生成一些字段,以便能夠用數量,價格填充多個products ..在該purchase期間,然後將所有數據存儲在JSON object中。

所以在add.ctp鑑於purchase,我也會有這樣的JSON object爲〔實施例:

$data = { 
    "reference": "V656413", 
    "supplier_id": 31, 
    "payment_id": 5, 
    "products_purchases": [ 
     { 
      "product_id": 5566, 
      "purchase_id" 999, 
      "quantity": 4, 
      "price": 899 
     }, 
     { 
      "product_id": 7865, 
      "purchase_id" 999, 
      "quantity": 6, 
      "price": 54 
     },{ 
      "product_id": 434, 
      "purchase_id" 999, 
      "quantity": 8, 
      "price": 22 
     }, 
    ] 
} 

POST這個對象在add.ctp文件中使用form,以及如何我怎麼能處理和保存它作爲一個實體與其在PurchasesController其協會?

add方法在控制器現在是如下:

public function add() 
    { 
     $purchase = $this->Purchases->newEntity(); 
     if ($this->request->is('post')) { 
      $purchase = $this->Purchases->patchEntity($purchase, $this->request->data); 


      if ($this->Purchases->save($purchase)) { 
       $this->Flash->success(__('The purchase has been saved.')); 

       return $this->redirect(['action' => 'index']); 
      } else { 
       $this->Flash->error(__('The purchase could not be saved. Please, try again.')); 
      } 
     } 
     $this->set('_serialize', ['purchase']); 
    } 

非常感謝您!

回答