新米SE、マーケティングを学ぶの巻

Web系のプログラミングの記事や、マーケティングについて書いていきます。

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を試してみて下さい。