cakephpでINSERTするつもりがUPDATEになる場合の対処法
今日悩んだことを調べ、あとで思い出すときのためにメモるシリーズ。
コントローラーの中で配列の中身を一つずつINSERTするときは、
こんな風に書きますが、
<?php foreach ($hoges as $key => $value) { if($value){ $this->data['Hoge']['test'] = $value; $this->Hoge->save($this->data); } } ?>
これだと、2週目以降が全てUPDATEになってしまいます。
primaryKeyをその都度nullにするっていう方法もありますが、
こんなの↓
<?php foreach ($hoges as $key => $value) { if($value){ $this->data['Hoge']['id'] = null; $this->data['Hoge']['test'] = $value; $this->Hoge->save($this->data); } } ?>
あまりスマートではないので、
そういう場合は、
<?php foreach ($hoges as $key => $value) { if($value){ $this->Hoge->create(); $this->data['Hoge']['id'] = null; $this->data['Hoge']['test'] = $value; $this->Hoge->save($this->data); } } ?>
としてやると、できます。
つまり初期化してるんですね。
for文でINSERTしてるとページロードが重い。。。