Aug 22
逆引きrhaco47: テーブルにデータを追加、修正、削除する
Viewsを使ったCRUDは紹介してましたが、単にデータを追加、修正、削除する方法を紹介してませんでした。
DbUtilをまたはテーブルオブジェクトからも発行できます。
1.テーブルオブジェクトを使う方法
$db = new DbUtil(Product::connection());//指定しなくても良い
//Productというテーブルモデルを使います。
$product = new Product();
$product->setName('hoge');
$product->save($db);//追加。save()でも良い
$product = $db->get(new Product(1));
$product->setName('fuga');
$product->save($db);//修正。save()でも良い
$product->drop($db);//削除。drop()でも良い
※追記(2009/01/31)
save()の場合は新しくコネクションが発生するので、たくさんsaveする時は注意が必要です。
2.DbUtilを使う方法
$db = new DbUtil(Product::connection());//必ず接続情報(この場合はProduct::connection())を設定する。
$product = ObjectUtil::hashConvObject(array('name'=>'hoge'),new Product(),false);//hashConvObjectでプロパティを入れてみる
$db->insert($product);
$flow = new Flow();
$product = $flow->toObject(new Product());//Flowクラスを使う
$db->update($product,new C(Q::eq(Product::columnName,'hoge')));//Criteriaを指定すると複数データをupdateできる
$db->delete(new Product(),new C(Q::eq(Product::columnName(),'hoge')));//nameカラムがhogeのもの全て削除
toObject、hashConvObjectは逆引き14を参考にして下さい。
1個のデータに関して行う場合はテーブルオブジェクトを使うと便利です。複数データに関して行う場合はDbUtilを使うと良いでしょう。