Cakephp 2.10で簡易的な注文管理のようなものを作りたいと思っております。
orderのviewからデータはOrdersテーブルとorder_detailsのテーブルにレコードは入ったのですが、
Order_detailのデータが1つしか格納されません。
また、Order_detailのフィールドのorder_idにしか値が格納されませんでした。
テーブル構成
■ordersテーブル(注文情報)
id | total_price | created | modified
■order_detailsテーブル(注文詳細)
id | order_id | item | num | sum_price | created | modified
id 注文ID 商品 数量 合計
以上になります。
ordersのViewが下記になります。
view
1<?php 2 echo $this->Form->input('Order_detail.0.item'); 3 echo $this->Form->input('Order_detail.0.num'); 4 echo $this->Form->input('Order_detail.0.sum_price'); 5 6 echo $this->Form->input('Order_detail.1.item'); 7 echo $this->Form->input('Order_detail.1.num'); 8 echo $this->Form->input('Order_detail.1.sum_price'); 9 10 echo $this->Form->input('Order_detail.2.item'); 11 echo $this->Form->input('Order_detail.2.num'); 12 echo $this->Form->input('Order_detail.3.sum_price'); 13 14 echo $this->Form->input('total_price'); 15 ?>
controller
1public function order() { 2 3 if ($this->request->is('post')) { 4 $this->Order->create(); 5 $order = $this->Order->save($this->request->data); 6 $this->request->data['OrderDetail']['order_id'] = $this->Order->id; 7 if ($this->Order->saveAll($this->request->data)) { 8 $this->Flash->success(__('The order has been saved.')); 9 return $this->redirect(array('action' => 'index')); 10 } else { 11 $this->Flash->error(__('The order could not be saved. Please, try again.')); 12 } 13 14 15 } 16 }
そもそも別モデルでかつ複数レコードをinsertする場合は、SaveAllでいいのでしょうか。
公式ドキュメントのhasMany を保存するを試して見ましたがわかりませんでした。
https://book.cakephp.org/2.0/ja/models/saving-your-data.html#model-saveassociated-array-data-null-array-options-array
よろしくお願いします。
あなたの回答
tips
プレビュー