我正在使用 yii2 创建一个 rest api 来创建和更新用户信息。下面是模型类中的规则函数。
public function rules()
{
return [
[['name', 'emailId', 'contactNumber'], 'required'],
[['name', 'emailId', 'contactNumber'], 'string', 'max' => 255]
[['emailId', 'username', 'contactNumber'], 'unique'],
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]]
];
}
这里我提到emailId
, username
,contactNumber
字段应该是唯一的。当我尝试创建时,它正在检查该字段是否是唯一的。如果是唯一的,它会抛出错误,否则它正在保存。那也行。
但是当我尝试更新该值时,它也在检查该字段的特定值是否唯一。但它不应该是这样的。unique
验证不应该在update action
. 所以我用'on'=>'update'
as like更新了规则Yii 1
。检查以下功能。
public function rules()
{
return [
[['name', 'emailId', 'contactNumber'], 'required'],
[['name', 'emailId', 'contactNumber'], 'string', 'max' => 255]
[['emailId', 'username', 'contactNumber'], 'unique', 'on'=>'update'],
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]]
];
}
但是当我查看官方文档时,没有选项on
可以查看特定的action
. 当我使用'on'=>'update'
时,两者(在创建和更新时)都没有验证。可能是因为on
. 就这样吧。我需要unique
为那些字段添加验证,而create action
不是在update action
.
所以,请任何人帮助我如何仅在创建操作中向这些字段添加唯一验证。
谢谢。