FuelPHPのドキュメントにも例がありますが、FuelPHPのValidationでuniqueチェックを作ってみました。
本家の例ではValidationを拡張する例として記載があります。
http://fuelphp.com/docs/classes/validation/validation.html
但し、DBへのInsert時は上記の拡張例で問題ないのですが、Update時は、
更新するレコード自身を含めてしまうとuniqueチェックで引っかかってしまうため、除外する必要があります。
その処理を公式ドキュメントの例を参考にコードを追加してみました。
また、コアクラスを拡張しているため、/fuel/app/bootstrap.phpを編集する必要があります。
Autoloader::add_classes(array( // ここにオーバーライドしたいクラスを追加します // Example: 'View' => APPPATH.'classes/view.php', 'Validation' => APPPATH.'classes/validation.php', ));
Modelのコード使用例は以下の通りです。
public static function validate($id=null) { $val = \Validation::forge(); $val->add_field('group_code', 'グループコード', 'required|min_length[1]|max_length[4]') ->add_rule('unique', self::$_table_name . '.group_code', $id); return $val; }
Controllerのコード例は以下の通りです。
■Insert例
$val = Model_Group::validate();
■Update例
$val = Model_Group::validate($post->id);