【CakePHP】アソシエーションされたモデルを一括で保存する(deep)
バージョン:CakePHP 2.x
アソシエーションされたモデルを一括で保存したい場合は、
オプションの「deep」にtrueを設定します。
下記の例はsaveAllを使用しています。
saveAssociatedの場合は1階層目のアソシエーションデータだけではなく、
2階層以下の深い階層まで保存することになります。
デフォルトはfalseです。
1 2 3 4 5 6 7 | $saveData = 保存データ if (モデル名1->saveAll( $saveData , array ( 'deep' => true))) { $this ->Session->setFlash(__( '登録が完了しました。' )); } else { $this ->Session->setFlash(__( '登録できませんでした。' )); } |
保存データは状況によって違いますが、例えば下記のようなデータです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | Array ( [モデル名1] => Array ( [0] => Array ←モデル名1の0番目データ ( [id] => 26 [フィールド名] => 値 [モデル名2] => Array ←モデル名1にアソシエーションされたモデル ( [0] => Array ( [id] => [フィールド名] => 0 ) [1] => Array ( [id] => [フィールド名] => 0 ) ) [モデル名3] => Array ←モデル名1にアソシエーションされたモデル ( ・ ・ ・ ) ) [1] => Array ←モデル名1の1番目データ ( [id] => 26 [フィールド名] => 値 [モデル名2] => Array ←モデル名1にアソシエーションされたモデル ( ・ ・ ・ ) [モデル名3] => Array ←モデル名1にアソシエーションされたモデル ( ・ ・ ・ ) ) ) |
参考:CakePHP公式サイト