ftp
5 سال پیش توسط ftp مطرح شد
5 پاسخ

حذف رکورد تکراری

@khanzadimahdi
با سلام
یک سوال من چند رکورد تکراری در دیتابیسم پیدا کردم میخواهم بگم که برو یکی از رکوردهای تکراری رو نگهدار و بقیه رو پاک کن چیکار باید انجام بدم اگه در لاراول هم چیزی وجود داره بگید
ممنون


ثبت پرسش جدید
mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
0

سلام به صورت زیر اول مثلا بر حسب یه فیلد رکورد های تکراری رو بگیرید

$duplicateRecords = DB::select('name')
              ->selectRaw('count(`name`) as `occurences`')
              ->from('users')
              ->groupBy('name')
              ->having('occurences', '>', 1)
              ->get();

بعدش حذف کنید تکراری ها رو

foreach($duplicateRecords as $record) {
    $record->delete();
}

ftp
تخصص : ساده
@ftp 5 سال پیش مطرح شد
0

@khanzadimahdi
مرسی
فقط این که من میخواهم یکی از موارد تکراری رو نگه داره و بقیه رو پاک کنه این کد اون یدونه رکورد رو نگه نمیداره درسته


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
0

خب همشو حذف نکنید. توی حلقه اولیشو continue اجرا کنید از دومی به بعد حذف کنید.


ftp
تخصص : ساده
@ftp 5 سال پیش مطرح شد
0

@khanzadimahdi
کدش چطوری میشه


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

درود

فرض کنید توی جدول Users چندیدن کاربر دارید که اسمشون "ali" هست
اگر می‌خواهید ۱ دونه رو نگه دارید ابتدا اولین کاربر (اونی رو که می‌خواهید نگه دارید) رو در یه متغیر قرار بدید

$dontDelete = App\User::where('name', 'ali')->first();

بعد با الکوئنت به راحتی تمام موارد به جز متغییر بالا رو حذف میکنیم

App\User::where('name', 'ali')
    ->where('id', '!=', $dontDelete->id)
    ->delete();

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام