حذف داده های قدیمی جداول دیتابیس با لاراول

حذف داده های قدیمی جداول دیتابیس با لاراول

گاهی اوقات بعد از فعالیت سایت شما برخی از جداول که برای لاگیری ایجاد شده اند دارای حجم و تعداد رکورد بسیار بالا می باشند و موجب کند شدن دیتابیس می شوند.  عموما یک کوئری برای این کار نوشته می شود که مثلا با انجام اتفاق خاص یا در زمان های خاص، اجرا می شود و رکورد هایی که با شرط شما برابری کند را از دیتابیس حذف می کند

 

زمان مطالعه: 3 دقیقه
بازدید: 973
پرسش و پاسخ: 0

ما در این مطلب حذف داده های قدیمی جداول دیتابیس با لاراول را می خواهیم با این فرضیات انجام دهیم

  • داده های یک ماه قبل 
  • جدول visit
  • اجرای کوئری با ورود کاربر به پنل کاربری

در مورد گزینه آخری شما می توانید از یک جاب در لاراول استفاده کنید که مثلا ساعت 3 بامداد اتوماتیک این کار را برای شما انجام دهد

قدم اول : به دست آوردن تاریخ 30 روز پیش، من از Carbon برای اینکار استفاده کردم شما میتونید از strtotime خود php هم استفاده کنید

use Carbon\Carbon; // اینو باید به اول کلاستون اضافه کنید

خب تاریخ 30 روز پیش رو ایجاد می کنیم 

$date=Carbon::now()->subDays(30)->format('Y-m-d'); 

مرحله آخر میگیم از مدل Visit (همون جدول ویزیت در دیتابیس که تو لاراول براش مدل ساختیم) سطرهایی که با شرط ما برابری می کنند رو حذف کن

Visit::where('created_at','<=',$date)->delete();

کل کد برای حذف داده های قدیمی جداول دیتابیس با لاراول

namespace App\Http\Controllers\Admin;
use App\Visit;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class AdminController extends Controller
{
   public function index()
    {
       $date=Carbon::now()->subDays(30)->format('Y-m-d');
       $visit=Visit::where('created_at','<=',$date)->delete();
    }
}
بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده