3

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

桌子:

NUM PROP_ID

3   4

3   5

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

4

3 回答 3

3

查看UniqueAttributesValidator以及这个答案。在链接中,您会看到它们已用于CUniqueValidator 选项的数组,但出于某种原因$this->attributenameparams为了我。我相信这是因为没有正确地传递给验证器,所以无论如何最好使用 UniqueAttributesValidator 类,因为它只是针对这些情况而设计的。criteria$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

首先在您的表中创建唯一字段

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

 array('field_name', 'unique'),

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

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

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

于 2012-05-03T15:20:29.423 回答