为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
守候你守候我 2022-05-27 15:04:03
我正在使用 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 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

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


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;

  }


查看完整回答
反对 回复 2022-05-27
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

有一个问题。那就是 '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;

}


试试这个。


查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号