フィールド情報について

フィールド情報の設定

ZF-Ex各モデル中にメンバ変数としてDBテーブルのフィールド情報を記述してあります。ここに書いてあるフィールド情報に従ってinsertやupdate、バリデーション処理が行われます。フィールド情報の例は次の通りです。

protected $fields = array(
                        array('key'      => 'field_1',
                              'validate' => array('NotEmpty', 'Code', array('StringLength', 0, 64))
                        ),
                        array('key'      => 'field_2',
                              'validate' => array('NotEmpty', array('StringLength', 0, 128))
                        ),
                        array('key'      => 'field_3',
                        ),
);

keyの値にフィールド名(テーブルのカラム名)を記述します。validateは省略可能で、バリデーションチェックについての設定を記述します。詳細はバリデータについての項目をご覧ください。

ここに記述したものの他に、次のフィールドが自動的に使用されます。

id

そのテーブルの主キーとなります。主キーの名前を変更する場合、メンバ変数の$_primaryを変更して下さい。

create_date, update_date

そのレコードの作成時刻、更新時刻となります。create_dateはinsert時にその時刻がセットされ、update_dateはinsert及びupdateの時にその時刻がセットされます。メンバ変数の$_savedateをfalseにするとこれらのフィールドは使用されなくなります。

delete_date

そのレコードの論理削除の時刻となります。このフィールドに日付がセットされていた場合、論理削除されたものと扱われます。ただし、Zend_Db_Selectのオブジェクトを取得して自分でSQLを作成する場合は上にある例のように論理削除についても条件を設定する必要があります。メンバ変数の$_deletedateにするとこのフィールドは使用されなくなり、処理が物理削除へと変更されます。

フィールドの追加・削除について

処理の条件に応じてフィールドの構成を変更したい場合、フィールドの追加や削除をメソッドで行う事ができます。詳しくはメソッドリファレンスの項目名、AppModel::addField($key, $validate, $name);, AppModel::removeField($key);のメソッドを参照ください。

$_exclude_fieldsについて

$_exclude_fieldsは不正入力への対策として設定します。POSTされてきたデータを保存する際、条件によって特定のフィールドを更新対象としたくない場合、通常はそのようなフィールドの名前を画面上で隠ぺいしますが、それだけではツール等による不正入力は防げません。このような時、$_exclude_fieldsに除外対象となるフィールド項目を設定する事により、保存用にデータを成型する際に除外されます。

$_exclude_fieldsに登録されているフィールド名はデータ保存の際に除外すします。$_exclude_fieldsの項目を変更するにはメソッドリファレンスの項目名、AppModel::getExcludeFields();, AppModel::addExcludeFields($field);, AppModel::unsetExcludeFields($field = array());のメソッドを参照ください。