包含错误数据的用户表。
我希望循环播放并删除email
中的重复记录,并保留包含lower
ID 的记录。
我想只保留id:1,14,1004,1005,1003,1006和1007.
$users = DB::table('users')->where('id', DB::raw("(select min(`id`) from users)"))->get();
foreach ($users as $user) {
if ( ???? )) { // <---- I'm not sure what to put here.
$user->delete();
}
}
$users = DB::table('users')->groupBy('email')->get();
返回我要保留的所有记录。
现在有点卡住了,任何提示都会非常感激
答案 0 :(得分:4)
尝试这样的事情
collections.defaultdict
首先列出具有最小ID的用户的所有ID(使用唯一的电子邮件),然后获取所有用户并循环访问它们。删除每个id不在其中的用户。
<强>更新强>
因为上面的查询似乎不起作用,所以我会尝试(最终没有完成)
// get users with min id
$ids= DB::table('users')->where('id', DB::raw("(select min(`id`) from users)"))->lists('id');
// get all users
$users = \App\User::all();
foreach ($users as $user) {
if (!in_array($user->id, $ids)) {
$user->delete();
}
}