【CakePHP】アソシエーションされたモデルを一括で保存する(deep)
バージョン:CakePHP 2.x
アソシエーションされたモデルを一括で保存したい場合は、
オプションの「deep」にtrueを設定します。
下記の例はsaveAllを使用しています。
saveAssociatedの場合は1階層目のアソシエーションデータだけではなく、
2階層以下の深い階層まで保存することになります。
デフォルトはfalseです。
$saveData = 保存データ if (モデル名1->saveAll($saveData, array('deep' => true))) { $this->Session->setFlash(__('登録が完了しました。')); } else { $this->Session->setFlash(__('登録できませんでした。')); }
保存データは状況によって違いますが、例えば下記のようなデータです。
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公式サイト