Yiiフレームワークでは、一意の検証ルールを使用して、ある条件内のフィールドの一意性をチェックできますか(基準があることはわかっていますが、この条件は少し注意が必要です)?つまり、property_idで一意のnum_daysを確認したいと思います。
テーブル:
NUM PROP_ID
3 4
3 5
挿入3、6を試みた場合は検証に合格しますが、3、4の場合は失敗します。
UniqueAttributesValidatorと、この回答を確認してください。リンクでは、CUniqueValidatorのオプションの配列に使用さ$this->attributename
れていることがわかりますが、何らかの理由で私のために使用されました。これは、がバリデーターに正しく渡されていないためだと思います。このような状況のためだけに作成されているため、とにかく、UniqueAttributesValidatorクラスを使用するのが最善です。params
criteria
$this->attributename
null
$this
結果のSQLには、次のWHERE
ような句が含まれます。
SELECT ... WHERE (`num`=:value) AND (`prop_id`=:prop_id) ...
これは3、4で簡単に失敗し、3、6で合格します。したがって、状況に応じて機能するはずです。
最初にテーブルに一意のフィールドを作成します
モデルでは、これを rules() に追加します
array('field_name', 'unique'),
2 つのフィールドを一意に組み合わせるには、このコードを使用します
public function rules() {
return array(
array('firstKey', 'unique', 'criteria'=>array(
'condition'=>'`secondKey`=:secondKey',
'params'=>array(
':secondKey'=>$this->secondKey
)
)),
);
}
カスタム Validator または検証関数を作成します。簡単です。