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

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

 

بهزاد میرزازاده بهزاد میرزازاده

زمان مطالعه

3 دقیقه

بازدید

68

پرسش و پاسخ

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();
    }
}