在 Yii 框架中,我可以使用唯一验证规则来检查某个条件下字段的唯一性(我知道有条件,但这个条件有点棘手)?即,我想检查 property_id 唯一的 num_days。
桌子:
NUM PROP_ID
3 4
3 5
如果我尝试插入 3、6,验证应该通过,但在 3、4 的情况下失败
查看UniqueAttributesValidator以及这个答案。在链接中,您会看到它们已用于CUniqueValidator 选项的数组,但出于某种原因$this->attributename
是params
为了我。我相信这是因为没有正确地传递给验证器,所以无论如何最好使用 UniqueAttributesValidator 类,因为它只是针对这些情况而设计的。criteria
$this->attributename
null
$this
生成的 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
)
)),
);
}
创建您的自定义验证器或验证函数,这很简单。