在 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
)
)),
);
}
创建自定义验证器或验证函数,这很简单。