FuelPHP Model_Crudクラス

FuelPHPのModel_Crudクラスは、基本的なCRUD (Create, Read, Update, Delete) 操作のメソッドを提供している。Model_Crudクラスを継承したサブクラスは、テーブル名や主キーなどのプロパティを定義するだけで、基本的なCRUD操作を行うことができる。

Model_Crudクラスを継承したクラスの例を示す。

class Model_Employee extends \Model_Crud {
  protected static $_table_name = 'employee';
  protected static $_primary_key = 'empno';
}

employeeテーブルから主キーの値が1であるレコードを検索する例を示す。

$employee = Model_Employee::find_by_pk(1);

レコードの挿入・更新

レコードの挿入及び更新に使う列名は$_propertiesパラメータに設定する。

protected static $_properties = array(
  'empno',
  'empname',
  'deptno',
  'email'
);

レコード挿入時のデフォルト値は$_defaultsパラメータに設定する。

protected static $_defaults = array(
  'deptno' => 1
);

入力値バリデーション

入力値バリデーションとは、レコードの挿入又は更新時にレコードの値に不正な値が含まれていないか検証する機能である。入力値バリデーションのルールは$_rulesパラメータに設定する。

protected static $_rules = array(
  'empno' => 'required',
  'email' => 'required|valid_email'
);

バリデーションのラベルは$_labelsパラメータに設定する。

protected static $_labels = array(
  'empno' => '従業員番号',
  'email' => 'メールアドレス'
);

Model_Crudクラスのパラメータ

Model_Crudクラスのパラメータ一覧
パラメータ 説明
$_table_name 利用するテーブルの名前
$_primary_key テーブルのidフィールド名
$_rules 入力値のバリデーションルール
$_labels バリデーションのラベル
$_properties 更新又は保存に使う列名
$_created_at 'created_at'のフィールド名
$_updated_at 'updated_at'のフィールド名
$_mysql_timestamp $_created_atと$_updated_atのフィールドにMySQLのタイムスタンプを入れるかどうか

Model_Crudクラスのメソッド

Model_Crudクラスのメソッド一覧
メソッド説明
count レコード件数を返す。
delete レコードの削除
find 配列で指定した条件に合致するすべてのレコードを検索する。
find_by 指定した列と値に合致するすべてのレコードを検索する。
find_by_pk 主キーによりレコードを検索する。
find_one_by 指定した列と値により一つのレコードを検索する。
find_by_column メソッド名の一部であるcolumn列と指定した値に合致するすべてのレコードを検索する。
find_one_by_column メソッド名の一部であるcolumn列と指定した値に合致するひとつのレコードを検索する。
find_all すべてのレコードを検索する。
forge Model_Crudクラスの新しいインスタンスを返す。
frozen レコードが凍結されているかチェックする。
pre_find クエリの実行前に呼ばれるメソッド
post_find クエリ結果を返す前に呼ばれるメソッド
save レコードの挿入または更新
set 現在のモデルインスタンスに配列を設定する。
is_new レコードが新しいかをチェックする。
to_array モデルのpublicの変数を返す。
pre_save 挿入クエリの前に呼ばれるメソッド
post_save 挿入クエリの後に呼ばれるメソッド
pre_update 更新クエリの前に呼ばれるメソッド
post_update 更新クエリの後に呼ばれるメソッド
pre_delete 削除クエリの前に呼ばれるメソッド
post_delete 削除クエリの後に呼ばれるメソッド
pre_validate バリデーションの前に呼ばれるメソッド
post_validate バリデーションの後に呼ばれるメソッド
prep_values バリデーション又はクエリを実行する前に呼ばれるメソッド
validates インスタンスがvalidationをパスしたかどうかを返す。
validation モデルのvalidationインスタンスを作成して返す。

countメソッド

function count($column = null, $distinct = true, $where = array(), $group_by = null)
$column
カウントする列の名前を指定する。$columnを省略した場合は主キーが使われる。
$distinct
値が重複しない列のみを対象とするかどうかを指定する。
$where
WHERE句を配列で指定する。
$group_by
グループ化する列を指定する。

deleteメソッド

レコードを削除して、削除した行数を戻り値として返す。

$employee = Model_Employee::find_by_pk(1);
if ($employee) {
  $employee->delete();
}

findメソッド

function find($config = array(), $key = null)
$config
条件を配列またはクロージャで指定する。
$key
結果の配列のキーに使用する列名を指定する。
$employee = Model_Employee(
array(
  'select' => '*',
  'where' => array('salary', '>=', '200000')
)
);

find_byメソッド

function find_by($column = null, $value = null, $operator = '=', $limit = null, $offset = 0)
$column
列の名前を文字列で指定する。又はWHERE句に指定する列の名前と値を連想配列で指定する。
$value
$columnを文字列で指定した場合は、チェックする値を指定する。
$operator
比較演算子を指定する。
$limit
取得するレコード数の上限を指定する。
$offset
オフセット(0~)を指定する。

75件のレコードを最大20件ずつ4回に分けて取得するには、$limitに20、$offsetにそれぞれ0、1、2、3を指定してfind_byメソッドを4回呼び出す。

find_by_pkメソッド

主キーからレコードを検索する。レコードが見つかった場合、Model_Crudインスタンスを返す。レコードが見つからなかった場合、nullを返す。

static function find_by_pk($value)
$value
検索する主キーの値
$employee = Model_Employee::find_by_pk(1);

forgeメソッド

Model_Crudクラスのインスタンスを新たに生成して、戻り値として返す。

static function forge($data = array())
$data
新しいインスタンスの値

Model_Crudを継承したクラスのインスタンスをデフォルト値で生成する例を示す。

$employee = Model_Employee::forge();

Model_Crudを継承したクラスのインスタンスを初期値を指定して生成する例を示す。

$employee = Model_Employee::forge(array(
  'empno' => 1,
  'empname' => '堀内まり菜',
  'deptno' => 1,
  'email' => 'marina@example.com'
));

frozenメソッド

frozenメソッドは、引数を省略した場合、レコードが凍結されているかどうかを戻り値として返す。boolean型の引数を指定した場合、レコードを凍結するかどうかを設定する。

function frozen($frozen = null)
$frozen
レコードを凍結させる場合はtrue、レコードを凍結させない場合はfalseを指定する。nullを指定した場合、レコードが凍結されているかどうかを戻り値として返す。

pre_findメソッド

クエリを実行する前に呼び出されるメソッド

static function pre_find(&$query)

protected static function pre_find(&$query) {
  // クエリの変更
  $query->where('active', 'yes');
}

saveメソッド

レコードを挿入または更新する。レコードの挿入又は更新に成功した場合、そのレコードを返す。レコードの挿入又は更新に失敗した場合、falseを返す。

function save($validate = true)
$validate
バリデーションを実行するかどうかを指定する。

レコードを挿入する例を示す。

$empolyee = Model_Employee::forge()->set(array(
  'empno' => 1,
  'empname' => '堀内まり菜',
  'deptno' => 1
));
$result = $employee->save();

レコードを更新する例を示す。

$employee = Model_Employee::find_by_pk(1);
$employee->deptno = 2;
$employee->save();

setメソッド

現在のモデルインスタンスに配列を設定する。

function set($values)
$values
値の配列
$empolyee = Model_Employee::forge()->set(array(
  'empno' => 1,
  'empname' => '堀内まり菜',
  'deptno' => 1
));

validatesメソッド

このインスタンスのバリデーションを実行する。バリデーションが成功した場合はtrue、バリデーションが失敗した場合はfalseを戻り値として返す。

validationメソッド

Validationクラスのインスタンスを生成して戻り値として返す。

$employee = Model_Employee::find_by_pk(1);
$validation = $employee->validation();