【问题标题】: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);

【问题讨论】:

标签: php laravel laravel-validation


【解决方案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);
})

【讨论】:

猜你喜欢
  • 2014-10-16
  • 2023-04-06
  • 2013-07-09
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2013-11-05
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多