我在yii2项目中工作。我有用户模型,因为电子邮件ID应该是唯一的。添加功能它正在工作。但是当我更新记录时,它不会检查唯一的验证。
以下是我的用户型号代码:
public function rules() {
return [
[['first_name', 'last_name', 'address', 'mobile', 'email', 'password_hash', 'role_id'], 'required'],
[['address'], 'string'],
[['role_id'], 'integer'],
[['email'], 'email'],
[['email'], 'unique', 'targetAttribute' => ['email']],
[['created_at', 'updated_at'], 'safe'],
[['first_name', 'last_name', 'email', 'password_hash'], 'string', 'max' => 255],
[['mobile'], 'required','on'=>'create,update'],
//[['mobile'], 'string','max'=>10],
[['mobile'], 'number','numberPattern' => '/^[0-9]{10}$/','message'=>"Mobile must be integer and should not greater then 10 digit"],
[['password_hash'],'string','min'=>6],
//[['mobile'], 'number'],
[['status'], 'string', 'max' => 1,'on'=>'create,update'],
[['role_id'], 'exist', 'skipOnError' => true, 'targetClass' => Roles::className(), 'targetAttribute' => ['role_id' => 'id']],
];
}
即使我尝试过:[[' email'],' unique',' targetAttribute' => ['电子邮件'],' on' =>数组('创建','更新')],
但是没有任何事情发生在更新功能中没有检查唯一规则。
答案 0 :(得分:0)
如果检查列相同,请尝试使用
[['email'], 'unique'],
答案 1 :(得分:0)
TargetClass使用帮助模型用户
检查数据库中的现有电子邮件 ['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => '\app\models\User', 'message' => 'This email address has already been taken.'],