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(

   ));

  }

   }


守候你守候我
浏览 208回答 2
2回答

摇曳的蔷薇

您实际上可以在访问控制器之前验证数据。它更安全,您将拥有更清晰的代码。首先,创建您的自定义请求验证: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;  }

汪汪一只猫

有一个问题。那就是 'phone' => 'unique:App\User,phone,' 。$用户->电话, 线路。您的代码:您需要在保存到数据库之前验证请求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;  }I hope it helps you.这会产生问题。你应该使用$this->phone。公共功能更新(请求 $request){ $user = Auth::user();$request->validate([  // unique:table,column,except,idColumn  'phone' => 'unique:App\User,phone,' . $this->phone,]);$user_id=Auth::user()->id;User::where('id', $user_id)->update([  'phone' => $request->phone,  'fname' => $request->fname,  'lname' => $request->lname]);return;}试试这个。
打开App,查看更多内容
随时随地看视频慕课网APP