とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

cake焼きました(14)

cakephpでsaveしまくると1つしか登録されてない」
foreachを使って連続してsave(保存)するつもりが、
デバッグのSQLを見ると2回目以降が同じものにUPDATEされてしまい、
1つしか登録できないという事象が起きました。

        $items = array();
        foreach ($newHogeDatas as $newHogeData) {
            $item = array(  'title'       => $newHogeData['title'],
                            'created_on'  => date("Y-m-d H:i:s"),
            $items[] = $this->save($item);
        }
        return $items;


調べたら同じ事象にぶつかっている人がいたので試してみる。
http://blog.livedoor.jp/agnode/archives/51157295.html

        $items = array();
        foreach ($newHogeDatas as $newHogeData) {
            $item = array(  'title'       => $newHogeData['title'],
                            'created_on'  => date("Y-m-d H:i:s"),
            $items[] = $this->save($item);
            $this->id = null;
        }
        return $items;

foreachで回す時は
idのリセットがキモのようですね。



指摘がありました。idを中に入れてしまうってnullを定義するとスマートです。

        $items = array();
        foreach ($newHogeDatas as $newHogeData) {
            $item = array(  'id'          => null
                            'title'       => $newHogeData['title'],
                            'created_on'  => date("Y-m-d H:i:s"),
            $items[] = $this->save($item);
        }
        return $items;