查询数据库中某一字段(如手机号)是否被他人使用,根据身份证号判断,循环连接数据库次数过多

// 手机号验证不允许一样
collect($data)->chunk(100)->each(function ($user){
$mobiles = $user->pluck('mobile');
  // 数据库中100以内的数据
$all_result = $userModel->select('id_number','mobile')->distinct()->whereIn('mobile',$mobiles)->get()->toArray();
  // 获取数据中的身份证号数组
$result = array_column($all_result,'id_number');
  // 获取传入数据集合中的身份证号
$pluck=$user->pluck('id_number')->toArray();
  // 判断两者差集
$diff = array_diff($result,$pluck);
  // 如果差集数据大于0,代表数据中有被他人使用的手机号
if (count($diff)>0) {
      //获取被使用的手机号
$mobile = array_filter($all_result,function ($value) use ($diff) {
if ($diff[0]==$value['id_number']) {
return $value['mobile'];
}
});
throw new Exception(ErrorCode::ERR_MOBILE_IS_USERD,"手机号{$mobile[0]['mobile']}已存在");
}
});
posted @ 2021-11-05 19:02  _lizhipeng  阅读(95)  评论(0)    收藏  举报