Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

[タスク] バリデーションチェック時、DBテーブルをチェックするものは論理削除の有無を個別に設定可能とする

ver 0.0.7の修正箇所。ちょっとした調整です。



ZF-Exで利用可能なバリデーションのうち、
IdExistsとUniqueはチェック時にDBへの問い合わせを伴います。
IdExistsは対象のキーがDBテーブル中に存在する事をチェックするバリデーションであり、
Uniqueは同一のキーが存在しない事をチェックするバリデーションです。

ZF-ExではDBテーブルに論理削除のフィールドを使用しており、
上記の2つのバリデーションも論理削除を有効としたものを前提としています。


元々は論理削除を無効としたい場合、
modelのフィールド定義で記述する必要がありました。

次のように、Uniqueを指定する配列の4つ目の値としてfalseを指定して、
それで論理削除が無効になります。

protected $fields = array(
    array('key'      => 'code',
        'validate' => array('NotEmpty', 'Code', array('StringLength', 0, 64), array('Unique', 'table', 'code', false))
    ),
);

元々modelの定義中で論理削除を使用しないように指定していても、
ここで再度論理削除を使用しないよう設定する必要がありました。


そこで、次のように修正しました。

1. 論理削除の使用の有無は、デフォルトではそのmodelの論理削除の使用有無に従う。
2. 設定を切り換えたい場合は、appModel::addUseDeleteDate($key, $validate_name, $useDeleteDate)メソッドを呼び出して変更する。
3. 従来のように、フィールド定義中でも指定可能。

addUseDeleteDateを呼び出す時は、次のように記述します。

$model = new appModel();
// フィールド「code」中のIdExistsにおいて、論理削除を考慮しないように設定
$model->addUseDeleteDate('code', 'IdExists', false);


バリデーターについての項目内、
IdExistsとUniqueの説明の部分に今回の修正箇所の説明書きを行いました。

TrackBack URL :

Leave a comment  

name

email

website

Submit comment