Model_Crud クラス

はじめに

データベース操作のほとんどは基本的な CRUD (Create Retrieve Update Delete) 操作に落ち着くことになる。 Model_Crud クラスは標準的な方法でその機能を提供します。このクラスは以下をサポートします:

最初のモデル

Model_Crud クラスを利用するために、\Model_Crud を継承したクラスを作ります。例:

<?php

class Model_Users extends \Model_Crud
{
	// 利用したいテーブル名をセット
	protected static $_table_name = 'users';
}

これで動作する基本的なモデルになりました。

設定

モデルの設定はいくつかのパラメータによって行われます:

パラメータ デフォルト 説明
$_table_name string 必須 利用するテーブル
protected static $_table_name = 'table';
$_primary_key string
'id'
テーブルの id フィールド名
protected static $_primary_key = 'custom_id';
$_rules array none 入力値のバリデーションルール
protected static $_rules = array(
	'name' => 'required',
	'email' => 'required|valid_email',
);
$_labels array none バリデーションのラベル
protected static $_labels = array(
	'name' => 'Your Name',
	'email' => 'Email Address',
);
$_properties array none 更新/保存に使うカラム名
protected static $_properties = array(
	'id',
	'name',
	'age',
	'birth_date',
	'gender',
);
$_mass_whitelist array none 以下でセットすることを許可するカラムの配列:
__construct、
::forge
->set()
protected static $_mass_whitelist = array(
	'first_name',
	'last_name',
	'age',
);
$_mass_blacklist array none 以下でセットすることを許可しないカラムの配列: __construct、 ::forge と ->set()
protected static $_mass_blacklist = array(
	'password',
	'is_admin',
);

$_mass_whitelist はプロパティの一斉割り当てをするときに許可する追加のセキュリティ機構です。 __construct::forge->set を 使った時にだけ動作することに注意してください。

$_connection string none データベースコネクションを使う、またはマスター/スレーブの読み込みに使うコネクション。設定しない場合は、DB設定がデフォルトで使用されます。
protected static $_connection = null;
$_write_connection string none マスター/スレーブへの書き込みで使用するデータベースコネクション。
protected static $_write_connection = 'master';
$_defaults array none デフォルト値の配列
protected static $_defaults = array(
	'field' => 'value',
	'other_field' => 'other value',
);
$_created_at string none 'created_at' のフィールド名。$_mysql_timestamp に true をセットすると UNIX タイムスタンプの代わりに、MySQL のタイムスタンプを使用します。
protected static $_created_at = 'created_at';
$_updated_at string none 'updated_at' のフィールド名。$_mysql_timestamp に true をセットすると UNIX タイムスタンプの代わりに、MySQL のタイムスタンプを使用します。
protected static $_updated_at = 'modified_at';
$_mysql_timestamp boolean none true にセットすると UNIX タイムスタンプの代わりに MySQL のタイムスタンプが $_created_at$_updated_at のフィールドに入ります。
protected static $_mysql_timestamp = true;