Yii 验证规则 - 唯一


Yii validation rule - unique

在 Yii 框架中,我可以使用唯一验证规则来检查某个条件下字段的唯一性(我知道有标准,但这个条件有点棘手)?即,我想通过property_id检查num_days唯一性。

桌子:

NUM PROP_ID
3   4
3   5

如果我尝试插入 3、6,验证应该通过,但在 3、4 的情况下失败

查看 UniqueAttributesValidator,以及这个答案。在链接中,您将看到他们对CUniqueValidator的criteria选项的params数组使用了$this->attributename,但由于某种原因,$this->attributename对我来说null。我相信这是因为$this没有正确传递给验证器,所以无论如何最好使用 UniqueAttributesValidator 类,因为它只是为这些情况而制作的。

生成的 sql 将具有如下所示的 WHERE 子句:

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

3、4 很容易失败,3、6 通过。所以它应该适合你的情况。

首先在表格中创建唯一字段

并在模型中将其添加到您的规则()

 array('field_name', 'unique'),

对于两个字段的组合,请使用此代码

public function rules() {
return array(
    array('firstKey', 'unique', 'criteria'=>array(
        'condition'=>'`secondKey`=:secondKey',
        'params'=>array(
            ':secondKey'=>$this->secondKey
        )
    )),
);
}

创建自定义验证器或验证函数,这很简单。