Laravel 从在 API 级别更新它的用户中验证唯一的移动设备?
Posted
技术标签:
【中文标题】Laravel 从在 API 级别更新它的用户中验证唯一的移动设备?【英文标题】:Laravel validate unique mobile out of the user that is updating it on API level? 【发布时间】:2018-12-11 18:41:34 【问题描述】:作为this link 和this link 无法帮助我,我想知道如何验证正在更新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);
不幸的是,我收到了这个错误:
The mobile number has already been taken.
发生了什么,我该如何解决这个问题?
【问题讨论】:
【参考方案1】:您必须传递用户 ID 而不是电话号码:
$validator = Validator::make($request->all(), [
'mobile_number' => 'required|string|min:11|max:11|unique:users,mobile_number,'.$user->id,
]);
或者你可以像这样使用 laravel Rule 类:
use Illuminate\Validation\Rule;
Validator::make($data, [
'mobile_number' => [
'required',mobile_number,
Rule::unique('users')->ignore($user->id),
],
]);
【讨论】:
以上是关于Laravel 从在 API 级别更新它的用户中验证唯一的移动设备?的主要内容,如果未能解决你的问题,请参考以下文章
Google Play 政策更新 | 扩展目标 API 级别要求以增进用户安全