表单验证器唯一用户名失败[重复]
Posted
技术标签:
【中文标题】表单验证器唯一用户名失败[重复]【英文标题】:Form validator unique username fails [duplicate] 【发布时间】:2021-02-25 18:02:51 【问题描述】:我在检测唯一用户名时遇到了困难。我的意思是它确实可以检测用户名,但如果请求输入的用户名与数据库中的用户当前用户名匹配,我想排除用户名验证。
目前,我得到:用户名已被使用。尽管它与该用户在数据库中的用户名相同。
谢谢!
规则
protected $rules = [
'username' =>
'nullable|string|alpha_dash|max:255|regex:/(^([a-zA-Z]+)(\d+)?$)/u|unique:users',
'first_name' => 'nullable|max:150',
'last_name' => 'nullable|max:150',
'location' => 'nullable|max:200',
'password' => 'confirmed'
];
编辑个人资料 POST 方法:
$validator = Validator::make($request->all(), $this->rules);
if ($validator->fails())
return \redirect()->back()->withErrors($validator->getMessageBag()->toArray())->withInput($request->except('image'));
else
$model = \App\User::find(\Auth::user()->id);
【问题讨论】:
***.com/questions/22405762/… 这能回答你的问题吗? Laravel update model with unique validation rule for attribute 【参考方案1】:更新时您可以忽略该字段:
'username' =>
'nullable|string|alpha_dash|max:255|regex:/(^([a-zA-Z]+)(\d+)?$)/u|unique:users,' . $user->id,
或者,
'username' => [
'nullable',
'string',
Rule::unique('users')->ignore($user->id),
],
您可以将不同的列名作为第二个参数传递给唯一方法:
Rule::unique('users', 'username')->ignore($user->id),
您还可以通过使用 where 方法自定义查询来指定其他查询约束。例如:
Rule::unique('users')->where(function ($query)
return $query->where('username', '!=', $request->username);
)
【讨论】:
@Nish 这是另一个错误,你可以通过laracasts.com/discuss/channels/laravel/…解决它以上是关于表单验证器唯一用户名失败[重复]的主要内容,如果未能解决你的问题,请参考以下文章