3

Yiiフレームワークでは、一意の検証ルールを使用して、ある条件内のフィールドの一意性をチェックできますか(基準があることはわかっていますが、この条件は少し注意が必要です)?つまり、property_idで一意のnum_daysを確認したいと思います。

テーブル:

NUM PROP_ID

3   4

3   5

挿入3、6を試みた場合は検証に合格しますが、3、4の場合は失敗します。

4

3 に答える 3

3

UniqueAttributesValidatorと、この回答を確認してください。リンクでは、CUniqueValidatorのオプションの配列に使用さ$this->attributenameれていることがわかりますが、何らかの理由で私のために使用されました。これは、がバリデーターに正しく渡されていないためだと思います。このような状況のためだけに作成されているため、とにかく、UniqueAttributesValidatorクラスを使用するのが最善です。paramscriteria$this->attributenamenull$this

結果のSQLには、次のWHEREような句が含まれます。

SELECT ... WHERE (`num`=:value) AND (`prop_id`=:prop_id) ...

これは3、4で簡単に失敗し、3、6で合格します。したがって、状況に応じて機能するはずです。

于 2012-05-03T16:14:09.453 に答える
2

最初にテーブルに一意のフィールドを作成します

モデルでは、これを rules() に追加します

 array('field_name', 'unique'),

2 つのフィールドを一意に組み合わせるには、このコードを使用します

public function rules() {
return array(
    array('firstKey', 'unique', 'criteria'=>array(
        'condition'=>'`secondKey`=:secondKey',
        'params'=>array(
            ':secondKey'=>$this->secondKey
        )
    )),
);
}
于 2014-06-24T07:31:36.190 に答える
1

カスタム Validator または検証関数を作成します。簡単です。

于 2012-05-03T15:20:29.423 に答える