【PHP】FuelPHP - Model_Crudの作り方と使い方
FuelPHPにおける Model_Crud とはいわゆるORマッパーと呼ばれるもので、テーブルにおけるCRUD操作を劇的に簡単にします。
今回はこれとMySQLを使ってかんたんなCRUD処理を作ってみます。
データベース
使用するテーブル
以下のようなテーブルを用意しました。
定義
>SHOW CREATE TABLE products;
CREATE TABLE `products` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`name` varchar(16) DEFAULT NULL COMMENT '商品名',
`price` varchar(16) DEFAULT NULL COMMENT '価格',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'レコード作成日',
`updated_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'レコード更新日',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '削除フラグ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品マスタ';
データ
>SELECT * FROM products;
+----+-----------+-------+---------------------+------------+------------+
| id | name | price | created_at | updated_at | is_deleted |
+----+-----------+-------+---------------------+------------+------------+
| 1 | りんご | 100 | 2019-02-21 00:00:00 | NULL | 0 |
| 2 | ぶどう | 150 | 2019-02-21 00:00:00 | NULL | 0 |
| 3 | バナナ | 180 | 2019-02-21 00:00:00 | NULL | 0 |
+----+-----------+-------+---------------------+------------+------------+
3 rows in set (0.01 sec)
実装
oilコマンドでModelを作成する
書式
php oil r fromdb:model [テーブル名] --crud
コマンド実行例
$ php oil r fromdb:model products --crud
Created model: APPPATH/classes/model/products.php
Created migration: APPPATH/migrations/001_create_products.php
成功するとmodel/配下にテーブル名のModelクラスと、migrations/配下にマイグレーション用のクラスが生成されます。
Modelクラスの実装
model/products.php (Products_Modelクラス)
<?php
class Model_Products extends \Model_Crud
{
protected static $_properties = array(
"id",
"name",
"price",
"created_at",
"updated_at",
"is_deleted",
);
protected static $_table_name = 'products';
}
使用例
// 主キーで1件取得
$product = Model_Products::find_by_pk(1);
var_dump($product->to_array());
array(6) {
["id"]=>
string(1) "1"
["name"]=>
string(9) "りんご"
["price"]=>
string(3) "100"
["created_at"]=>
string(19) "2019-02-21 00:00:00"
["updated_at"]=>
NULL
["is_deleted"]=>
string(1) "0"
}
他にも多数のメソッドが用意されています。詳しくは以下
http://fuelphp.jp/docs/1.7/classes/model_crud/methods.html
なお、一般的にORマッパーは不特定多数からアクセスがあるようなサービスでは使用しないことが推奨されています。
理由としてはフレームワークが用意する機能なので、フレームワーク内部で様々な処理を挟む(この辺は全然詳しくない…)ので性能面で難あり。だそうです。
管理画面などの利用者が限定されたシステムなどではコード量が圧倒的に減るので有効かと思われます。
コメント
コメントを投稿