FuelPHP1.7でのOrmのメソッド操作

Ormは、DBのテーブルレコードとオブジェクトのマッピングを行う。
また、テーブル間のリレーションも操作できる。

Ormのモデルでは、1つのインスタンスが1件のレコードに対応する。
DBのカラムは、インスタンスのプロパティと対応し、プロパティを操作することでレコードを変更できる。

今回は、OrmでのCRUD操作を学ぶ。

1.レコードの作成

レコードの作成は以下の手順で行う。

①レコードを作成する場合、まずModelを生成する。
②続いて、各カラムに値をセットする。
③最後に save()メソッドでデータベースにインサート。

$test = new Model_Test(); //①
$test->name = 'testname'; //②
$test->property = 'something'; //②
$test->save(); //③

save()を行うと、$test->created_atと$test->updated_atのタイムスタンプも自動で保存される。
また、AUTO_INCREMENTによって保存されたIDも、自動的に$test->idに設定される。

Modelの作成には forge()メソッドが使える。

$test = Model_Test()::forge();

プロパティの指定方法には配列が使える。

$props = array('name'=>'testname','property'=>'something');
$test = Model_Test()::foge($props);
$test->save();

2.レコードの取得

ここはFuelPHP1.7で「FuelPHP入門」のブログサンプルで色々大変だったところ。
クエリビルダの問題でもあるのか。

find()メソッドを使うときは基本的に値を指定してやらないといけない。
値が見つからなかった場合、Model_Testのインスタンか nullを返す。

// ID=2の記事を検索する
$test = Model_Test::find(2);
// 複合主キーを使用している場合
$test = Model_Test::find(array(2, 'foo'));

最初または最後のレコードを取得する場合。
第2引数にオプションをしているす事ができる。

// 最初のエントリーを検索する
$test = Model_Test::find('first');
// date カラムで並び替えて最新のエントリーを検索する
$test = Model_Test::find('last', array('order_by' => 'date'));

すべてのレコードを検索する場合は、find(‘all’)とする。「find()」だけではとってこれない。
もしくはquery()と指定する。

$test = Model_Test::find('all');

find()メソッドの指定方法が色々あるな・・・
専用の記事でまた書く。

3.レコードの更新

レコードの更新は、レコードの作成時に使用したsave()メソッドを使用する。

①該当レコード、今回はIDが2のレコードを取得する。
②nameプロパティに新しい値のセット。
③DBへアップデート。

$test = Model_Test::find(2); //①
$test->name = 'twoname'; //②
$test->save(); //③

4.レコードの削除

レコードの削除にはdelete()メソッドを使う。

$test = Model_Test::find(2);
$test->delete();

参考

CRUD – Orm Package – FuelPHP ドキュメント

コメント

タイトルとURLをコピーしました