CakePHP ループ内でのinsertにハマる

現在開発進行中の完全自動売買システムですが、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;

このようにしたらうまくいきました。

参考資料
CakePHPガイドブック P117 「7-2-5 データを保存する」

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です