現在開発進行中の完全自動売買システムですが、CakePHPでループ構文を使ってinsertやupdateを行おうとした時に、ハマってしまったことがあったのでメモしときます。
ループを使ってinsert
コントローラー(Controllers)ファイルにループを使ってデータベースへinsertをするために、
$i = 0; while ($i < = 15 ): //データ新規登録 $insertData = array( "[Model名]" => array( "pair" => '1', "day" => '20080208', "endrate" => '', "startrate" => '107.56', ) ); $this->[Model名]->save($insertData); $i++; endwhile;
こんな感じでプログラムを組んでみたら、1件しかデータがinsertされませんでした。
いろいろと調査してみたら、ありました。
CakePHPガイドブック P117 「7-2-5 データを保存する」
連続してsaveメソッドを使って新規作成を行う場合は、createメソッドをコールしてidを初期化する必要があります。
わかりにくいです(n)
とにかく、そういうことらしいので、
$i = 0; while ($i < = 15 ): $this->[Model名]->create(); //←これ追加(id初期化) //データ新規登録 $insertData = array( "[Model名]" => array( "pair" => '1', "day" => '20080208', "endrate" => '', "startrate" => '107.56', ) ); $this->[Model名]->save($insertData); $i++; endwhile;
このようにしたらうまくいきました。