Laravel,如何更新用户个人资料并检查电话号码是否重复

时间:2019-11-27 03:43:43

标签: php laravel

我正在使用ajax更新同一页面中的用户个人资料,对此我没有任何问题,因为用户已登录,然后控制器按照下面的代码从Auth中检查用户ID,但是在注册页面会检查电话号码是否重复,但是在更新中,我不知道该怎么做,如果当前用户没有更新电话号码,也将忽略当前用户的更新!

控制器:

 public function update(Request $request)
  {
  $user_id=Auth::user()->id;
  User::where('id', $user_id)->update([
  'phone' => $request->phone,
  'fname' => $request->fname,
  'lname' => $request->lname
  ]);
   return Response::json(array(
   ));
  }
   }

2 个答案:

答案 0 :(得分:0)

您需要先验证请求,然后再保存到数据库

public function update(Request $request)
  {
    $user = Auth::user();

    $request->validate([
      // unique:table,column,except,idColumn
      'phone' => 'unique:App\User,phone,' . $user->phone,
    ]);

    $user_id=Auth::user()->id;

    User::where('id', $user_id)->update([
      'phone' => $request->phone,
      'fname' => $request->fname,
      'lname' => $request->lname
    ]);

    return;
  }

我认为它可以为您提供帮助。

答案 1 :(得分:0)

实际上,您可以在进入控制器之前验证数据。这要安全得多,而且您的代码更简洁。首先,创建您的自定义请求验证:

php artisan make:request UserRequest

这将创建一个空的UserRequest类,您可以在其中验证数据:

class UserRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    //Validate your data here
    public function rules()
    {
        return [
            'phone' => 'required|unique:users',
            'fname' => 'required',
            'lname' => 'required',
        ];
    }

    //Add custom message if validation fails
    public function messages()
    {
        return [
            'phone.required' => 'Phone is required.',
            'phone.unique' => 'Phone number should be unique.',
            'fname.unique' => 'First name is required.',
            'lname.required' => 'Last name is required.',
        ];
    }
}

您现在要做的就是在控制器中导入此自定义验证:

public function update(UserRequest $request)
  {
    $user_id = Auth::user()->id;

    User::where('id', $user_id)->update([
      'phone' => $request->phone,
      'fname' => $request->fname,
      'lname' => $request->lname
    ]);

    return;
  }

让我知道这是否对您有所帮助,或者您是否遇到任何错误或类似问题。