CakePHP 配列のデータを追加する

PHP

CakePHPでループを使って配列のデータを追加する

たとえば、データが複数あり、これをデータベースに上書きでなくて、追加でしていきたい場合があると思います。

 例:Categoryというモデルにcategory_idsという配列のデータを加えたい
 
 foreach($category_ids as $category_ids){
 		
 	$this->data['Category']['category_id']=$category_ids;
 
 	$this->Category->save($this->data);
 }

上記のようにすると、$category_idsの数だけSQLでUPDATEが実行され、都度、値が上書きされるので、最後の値しか入りません。
そのため、createというメソッドを次のように呼んでやります。

 foreach($category_ids as $category_ids){
 	
 	//createを追加
 	$this->Category->create($data = array());
 		
 	$this->data['Category']['category_id']=$category_ids;
 
 	$this->Category->save($this->data);
 	 		
 }

すると、ループされるたび、INSERTが実行されてデータが追加されます。

元ネタ
http://book.cakephp.org/ja/view/75/Saving-Your-Data

余談ですが、categoryというモデル名にしたために、面倒なことになりました。
データベースのテーブル名はcategoriesで認識してくれます。
ですが、他のテーブルとhasAndBelongsToMany(HABTM)で関連付けるときのテーブル名やID名はcategorysってしないと認識してくれませんでした。[sad]
面倒です…それってそんなものなのでしょうか?
複数名はただ単にsをつけるだけで済むもので命名しておくのがトラブルが少なそうです。

カテゴリーPHP

コメントを残す

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