Laravel7,用户的phone(唯一)通过更新抛出'The phone has already been taken.'
Laravel7, user's phone (unique) by update throw 'The phone has already been taken.'
在 profile.blade 中,更新配置文件中的输入时出现错误 The phone has already been taken.
控制器:
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 已经保存并且没有对其进行任何更改,则会抛出错误(phone 已被采用)。
需要帮助解决问题,
谢谢
您正在重复 phone 中的唯一规则。
'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
,它会抛出验证错误。
在 profile.blade 中,更新配置文件中的输入时出现错误 The phone has already been taken.
控制器:
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 已经保存并且没有对其进行任何更改,则会抛出错误(phone 已被采用)。
需要帮助解决问题,
谢谢
您正在重复 phone 中的唯一规则。
'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
,它会抛出验证错误。