laravel - Laravel7,用户的电话(唯一)通过更新抛出“电话已被占用。”
问题描述
在 profile.blade 中,更新配置文件中的输入时出现错误电话已被占用。
控制器:
public function profileUpdate(Request $request)
{
$user = Auth::user();
$messages = [
'user_name.required' => __('The User name field is required.'),
'last_name.required' => __('The Last Name field is required.'),
'first_name.required' => __('The First Name field is required.'),
'phone.required' => __('The Phone field is required.'),
];
$request->validate([
'first_name' => 'required|max:255',
'last_name' => 'required|max:255',
'email' => [
'required',
'email',
'max:255',
Rule::unique('users')->ignore($user->id)
],
'user_name' => [
'required',
'max:255',
'min:4',
'string',
'alpha_dash',
Rule::unique('users')->ignore($user->id)
],
'phone' => [
'required',
'unique:users',
'min:10',
'numeric',
Rule::unique('users')->ignore($user->id)
],
], $messages);
$input = $request->except('bio');
$user->fill($input);
$user->bio = clean($request->input('bio'));
$user->birthday = date("d-m-Y", strtotime($user->birthday));
$user->user_name = Str::slug($request->input('user_name'), "_");
$user->save();
return redirect()->back()->with('success', __('Update successfully'));
}
在视图刀片中:
<div class="form-group">
<label>{{ __("Phone Number") }}</label>
<input type="text" value="{{ old('phone',$dataUser->phone) }}" name="phone" placeholder="{{ __('Phone Number') }}" class="form-control">
<i class="fa fa-phone input-icon"></i>
</div>
<div class="form-group">
<label>{{ __("Birthday") }}</label>
<input type="text" value="{{ old('birthday',$dataUser->birthday ? display_date($dataUser->birthday) : '') }}" name="birthday" placeholder="{{ __('Birthday') }}" class="form-control date-picker">
<i class="fa fa-birthday-cake input-icon"></i>
</div>
<div class="form-group">
<label>{{ __("About Yourself") }}</label>
<textarea name="bio" rows="5" class="form-control">{{ old('bio', $dataUser->bio) }}</textarea>
</div>
如果电话已保存且未对其进行任何更改,则会引发错误(电话已被占用)。
需要帮助来解决问题,
谢谢
解决方案
您正在重复电话中的独特规则。
'phone' => [
'required',
'unique:users', // Remove this line.
'min:10',
'numeric',
Rule::unique('users')->ignore($user->id)
],
unique:users
是一样的Rule::unique('users')
。由于unique:users
不忽略$user->id
,因此会引发验证错误。