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を使うと良いでしょう。

| comment(0)