スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ループしながらDB登録してると上書きされる【CakePHP2.3】【凡ミス】

タイトル通り、上書きされる凡ミスのご紹介。

何らかの処理をしてDBに登録するとき↓な感じで書くと思う。


//forとかでぐるぐるまわしながら
$this->Hoge->save($hoge);
//↑で登録


そしてそれをn回ループすると、1つの行をn回も上書いてしまう。
結果、最後に登録したものしかDBになくて、あれ・・・?となる。

取りあえず「var_dump($this->Hoge->save($hoge));」すると、


array(1) {
["Hoge"]=>
array(3) {
["modified"]=>
string(19) "2013-10-20 00:33:53"
["created"]=>
string(19) "2013-10-20 00:33:53"
}
}
----
array(1) {
["Hoge"]=>
array(1) {
["modified"]=>
string(19) "2013-10-20 00:34:36"
}
}
----
array(1) {
["Hoge"]=>
array(10) {
["modified"]=>
string(19) "2013-10-20 00:35:10"
}
}



な感じになるのがわかる。

二回目以降はcreatedがないわけです。(たぶんidもあるとおもう、けしちゃったけど。)
なので、Hogeモデルで登録するときは、


//forとかでぐるぐるまわしながら
$this->Hoge->create();//<-NEW!!
$this->Hoge->save($hoge);
//↑で登録



な感じにcreate()しないといけない。

まじ凡ミス。
元々の仕様として既にある行に対してアップデートかける形だったのを一気に登録するようにしたのがミスの原因。




うぐぅ もうAM1時・・・
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。