Laravel 会验证在 API 级别更新它的用户的唯一移动设备吗?

Dol*_*rma 1 php laravel laravel-5.6

由于此链接此链接无法帮助我,我想知道如何验证正在 API 级别更新它的用户的唯一移动设备。例如:

public function register(Request $request)
{
    try {
        $user = User::whereMobileNumber($request->mobile_number)->first();

        /*VALIDATION IF USER NOT FOUND*/
        if ($user == null) {
            $validator = Validator::make($request->all(), [
                'mobile_number' => 'required|string|unique:users|min:11|max:11',
            ]);
        }else{
            /*VALIDATION IF USER HAVE DATA AND IGNORE CHECK MOBILE NUMBER*/
            $validator = Validator::make($request->all(), [
                'mobile_number' => 'required|string|min:11|max:11|unique:users,mobile_number,'.$user->mobile_number,
            ]);
        }

        if ($validator->fails()) {
            return response(['data' => $validator->errors()->all(), 'status' => $user->mobile_number], 200);
        }

        ...
    } catch (\Exception $ex) {
        return response(['data' => $ex->getMessage(), 'status' => '5'], 200);
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到此错误:

The mobile number has already been taken.
Run Code Online (Sandbox Code Playgroud)

那会发生什么,我该如何解决这个问题?

Mar*_*boc 5

您必须传递用户 ID 而不是电话号码:

$validator = Validator::make($request->all(), [
                'mobile_number' => 'required|string|min:11|max:11|unique:users,mobile_number,'.$user->id,
            ]);
Run Code Online (Sandbox Code Playgroud)

或者你可以像这样使用 laravel Rule 类:

use Illuminate\Validation\Rule;

Validator::make($data, [
    'mobile_number' => [
        'required',mobile_number,
        Rule::unique('users')->ignore($user->id),
    ],
]);
Run Code Online (Sandbox Code Playgroud)