У меня есть приложение Laravel 5.4, всякий раз, когда я пытаюсь обновить пользователя с неизменным адресом электронной почты, я получаю сообщение об ошибке «Электронная почта уже используется», что имеет смысл, поскольку отредактированный пользователь уже имеет электронную почту.Обычно я имею дело с этим просто используя что-то вроде этого:
'email' => 'required|max:128|unique:users,email,'.$u->email,
Однако, это не работает в этом конкретном приложении.Я все еще получаю ту же ошибку «уже используется».
Полный объект правил проверки выглядит так, как только php заменяет строку:
$rules = [
"name" => "required|max:64",
"email" => "required|max:128|unique:users,email,user@admin.com",
"role" => "required"
]
Я не могу найти что-то не так с этим,Что может быть причиной неправильной проверки?
Я добавлю весь процесс проверки функции обновления, если это поможет.
$u = User::find($id);
$input = $request->all();
$rules = [
'name' => 'required|max:64',
'email' => 'required|max:128|unique:users,email,'.$u->email,
'role' => 'required'
];
$messages = [
'email.required' => 'El Email es obligatorio',
'email.max' => 'El Email no debe exceder los 128 caracteres',
'email.unique' => 'Ya existe un usuario con este Email',
'name.required' => 'El nombre es obligatorio',
'name.max' => 'El Email no debe exceder los 64 caracteres',
'role.required' => 'El Rol es obligatorio',
];
$validator = Validator::make($input, $rules, $messages);
if ( $validator->fails() ) {
return redirect('users/'.$id.'/edit')->withErrors($validator)->withInput();
} else {
// update user
}