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();
コメント