CakePHP-複数テーブルで一括insertする-
CakePHPで「複数のテーブルにデータを登録したい」という状況になった時は、【saveAssociated】を使います。
ただ、あらかじめモデルにbelongsToやhasManyといったアソシエーションが設定されている必要があります。
やり方は1つの変数にデータを入れ込んで、最後にsaveAssociatedを実行します。
例えば、親が「Oya」モデルで、子が「Ko」モデルだとします。
一つのレコードを「oyas」テーブルに保存するときに、同時に複数の「kos」レコードを登録します。
OyasController.php
//配列に「Oya」のデータを一つ、「Ko」のデータを3つ入れる $array['Oya']['name'] = 'oya'; $array['Ko'][0]['name'] = 'ko1'; $array['Ko'][1]['name'] = 'ko2'; $array['Ko'][2]['name'] = 'ko3'; //まとめて保存する $this->Oya->saveAssociated($array);
ただ、「Oya」を複数登録しようとするとうまく行きません。
そういう時はsaveAssociatedではなくてsaveManyを試してみて下さい。