我正在使用 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.
所以,请任何人帮助我如何仅在创建操作中向这些字段添加唯一验证。
谢谢。