このようにデータを保存したいと思います: 'Orders' - > 'OrdersFoods' - > 'OrdersFoodsChanges' OrdersFoodsTableは結合テーブル(Orders - Foods)です。Cakephp 3は、結合テーブルとその結合テーブルに関連付けられているテーブルにデータを保存します。
なぜ私はそうしたいのですか? Table OrdersFoodsには注文した食品(ids)に関する情報が含まれていますが、その食品に使用されているすべての成分に関する追加のデータを特定の順序で保存したいと思います。そのため、私はテーブルOrdersFoodsからIDを持つ追加のテーブル(OrdersFoodsChanges)を作成しました。
データを結合テーブルに保存できますが、別のテーブル(OrdersFoodsChangesTable)に保存することはできません。
$order = $this->Orders->patchEntity($order, $this->request->data, [
'associated' => [
'Foods._joinData.OrdersFoodsChanges'
//'Foods.OrdersFoods.OrdersFoodsChanges'
]
をしかし、運を持つ:
私はそれを最も簡単な方法を行うことを試みました。
patchEntityオブジェクト
object(Admin\Model\Entity\Order) {
'user_id' => (int) 1,
'city' => '',
'postal_code' => '',
'street' => '',
'house' => '',
'phone' => '',
'foods' => [
(int) 0 => object(Admin\Model\Entity\Food) {
'id' => (int) 15,
'name' => 'Royal',
'price' => (float) 15,
'category_id' => (int) 2,
'photo_id' => (int) 69,
'shop_id' => (int) 1,
'favorite' => false,
'vat' => (int) 23,
'visible' => true,
'position' => (int) 0,
'_joinData' => object(Admin\Model\Entity\OrdersFood) {
'quantity' => (int) 1,
'orders_foods_changes' => [
(int) 0 => object(Admin\Model\Entity\OrdersFoodsChange) {
'component_quantity' => (int) 25,
'component_id' => (int) 1,
'order_food_id' => (int) 1,
'type' => 'ADD',
'element_num' => (int) 1,
'[new]' => true,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'component_quantity' => true,
'component_id' => true,
'order_food_id' => true,
'type' => true,
'element_num' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Admin.OrdersFoodsChanges'
}
],
'[new]' => true,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'quantity' => true,
'orders_foods_changes' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Admin.OrdersFoods'
},
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'_joinData' => true
],
'[original]' => [
'_joinData' => [
'quantity' => '1',
'orders_foods_changes' => [
(int) 0 => [
'component_quantity' => (int) 25,
'component_id' => (int) 1,
'order_food_id' => (int) 1,
'type' => 'ADD',
'element_num' => (int) 1,
'id' => (int) 2
]
]
]
],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Admin.Foods'
}
],
'price' => (float) 15,
'shop_id' => (int) 1,
'[new]' => true,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'user_id' => true,
'type' => true,
'city' => true,
'postal_code' => true,
'street' => true,
'house' => true,
'phone' => true,
'foods' => true,
'price' => true,
'shop_id' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Admin.Orders'
}
SQLログケーキでも最後のテーブルに何かを保存しようとしないから、私が見ることができるように。
私は何か助けに感謝します。
実際の問題は何ですか?何がうまくいかない?エラーメッセージ?モデルの例? –
@awons保存中にエラーはありません。私は自分の投稿を編集しました。私の推測では、OrdersFoodsChangesエンティティで何かが間違っているということです。いくつかの愚かな間違い。私は "フィールド"をマニュアルで追加しました。例:$ this-> request-> data ['foods'] ['_ joinData'] ['orders_foods_changes'] [0] ['component_id'] = 1; –