Laravel 5 Update Validation电子邮件必须是唯一的

时间:2018-08-20 10:51:42

标签: php laravel laravel-5

我正在尝试以管理员身份更新用户。

我正在更改用户名,但是它说电子邮件必须是唯一的。

我该如何解决。

公共功能更新($ id,PutUser $ request) {     如果(auth()-> id()== $ id){         返回redirect()-> back()-> withFlashDanger('权限被拒绝,您不能在此处编辑自己的配置文件。');     }

$user = User::find($id);


$user->update((array_merge($request->validated(), ['county' => request('county')])));

//Update model_has_roles model with assignees_roles



return redirect()->route('users.index')->withFlashSuccess(trans("alerts.users.updated"));
}

这是请求类

     public function authorize()
     {
         return true;
     }

     public function rules()
     {
         $user_id =  $this->input('id');

         return [
           'name' => 'required|string',
           'username' => 'required',
           'email' => 'required|email|unique:users,email'.$user_id,
           'gender' => 'required',
           'phone' => 'sometimes|numeric',
           'address' => 'sometimes|string',
           'country_id' => 'required',
         ];
     }
}

我一直收到失败的电子邮件验证。 “电子邮件已被接收”。任何想法

1 个答案:

答案 0 :(得分:3)

您在验证中的email标签后缺少逗号:

return [
    'name' => 'required|string',
    'username' => 'required',
    'email' => 'required|email|unique:users,email,'.$user_id,
    'gender' => 'required',
    'phone' => 'sometimes|numeric',
    'address' => 'sometimes|string',
    'country_id' => 'required',
];

自Laravel 5.3(我相信)以来,您还可以使用规则构建器来获得更具描述性的验证规则。这些对于人类来说更好阅读和解释,这样会导致较低的错误率:

use Illuminate\Validation\Rule;

return [
    'email' => [
        'required',
        Rule::unique('users', 'email')->except($user_id),
    ]
];

https://medium.com/@tomgrohl/why-you-should-be-using-rule-objects-in-laravel-5-5-c2505e729b40

相关问题