Я использую Laravel 5, но концепция та же
// проверка от 1 до 500 записей, для некоторых БД истечет время ожидания, если от 1 до 5000 и более зависит от количества данных, вам может потребоваться увеличить предел времени ожидания
$users = Subscribers::all(); // take all users from DB
for ($x = $check_from; $x <= $check_to; $x++){
$check_user = Subscribers::select('id','email')->where('id',$x)->first();
if (!isset($check_user)){ // check for gaps in betw records
echo $x . "- not set<br>";
}
else{
$check_user_id = strtolower(trim($check_user->id));
$check_user_email = strtolower(trim($check_user->email));
foreach ($users as $user){
$user_id = strtolower(trim($user->id));
$user_email = strtolower(trim($user->email));
if ($check_user_email == $user_email AND $check_user_id !== $user_id ){
echo $check_user_id.' - '.$user_id.' - '. $user_email.' - Duplicated records<br>';
//$user->delete();
// choose to delete duplicate or whatever u wanna do with it
}
}
}
}
// необходимо проверить, что адрес электронной почты равен && user_id не совпадает, тогда будет 2 идентификатора с тем же адресом электронной почты
Мой код работает, но если кто-то сможет его улучшить, то будет короче.