表单验证器唯一用户名失败
Form validator unique username fails
我在检测唯一用户名时遇到困难。我的意思是它确实可以检测用户名,但如果请求输入的用户名与数据库中该用户的当前用户名匹配,我想排除用户名验证。
目前,我得到:用户名已被占用。尽管它与数据库中该用户的用户名相同。
谢谢!
规则
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);
更新时您可以忽略该字段:
'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),
],
您可以将不同的列名作为第二个参数传递给 unique 方法:
Rule::unique('users', 'username')->ignore($user->id),
您还可以通过使用 where 方法自定义查询来指定其他查询约束。例如:
Rule::unique('users')->where(function ($query) {
return $query->where('username', '!=', $request->username);
})
我在检测唯一用户名时遇到困难。我的意思是它确实可以检测用户名,但如果请求输入的用户名与数据库中该用户的当前用户名匹配,我想排除用户名验证。
目前,我得到:用户名已被占用。尽管它与数据库中该用户的用户名相同。
谢谢!
规则
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);
更新时您可以忽略该字段:
'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),
],
您可以将不同的列名作为第二个参数传递给 unique 方法:
Rule::unique('users', 'username')->ignore($user->id),
您还可以通过使用 where 方法自定义查询来指定其他查询约束。例如:
Rule::unique('users')->where(function ($query) {
return $query->where('username', '!=', $request->username);
})