تکنولوژی نوین اینترنتی
Soft Deletes در لاراول یک ویژگی است که به شما این امکان را میدهد تا رکوردها را بهجای حذف دائمی، بهطور نرم (soft) حذف کنید. به این معنی که رکوردهای حذفشده هنوز در پایگاه داده وجود دارند، اما از نظر اپلیکیشن به عنوان "حذفشده" علامتگذاری میشوند و دیگر در نتایج جستجو ظاهر نمیشوند.
این ویژگی برای جلوگیری از حذف دائمی دادهها و قابلیت بازگرداندن آنها در آینده بسیار مفید است.
حذف نرمافزاری: رکوردها بهجای حذف فیزیکی، تنها یک علامت در پایگاه داده (مثلاً یک ستون تاریخ و زمان) میگیرند که نشاندهنده حذف بودن آنها است.
بازگردانی رکوردها: رکوردهای حذفشده میتوانند بهراحتی بازیابی شوند.
حفظ یکپارچگی دادهها: از آنجا که رکوردها فیزیکی حذف نمیشوند، هیچگونه اطلاعات مهمی از دست نمیرود و تاریخچه دادهها محفوظ میماند.
برای استفاده از Soft Deletes ابتدا باید ویژگی SoftDeletes
را در مدل خود اضافه کنید. برای مثال، اگر یک مدل Post
دارید، باید کد زیر را در آن مدل قرار دهید:
این کار باعث میشود که لاراول بتواند رکوردها را بهصورت نرم حذف کند.
deleted_at
در جدولبرای اینکه Soft Deletes کار کند، نیاز است که جدول شما یک ستون به نام deleted_at
داشته باشد که تاریخ و زمان حذف رکورد را ذخیره کند. برای این منظور باید هنگام ساخت جدول، این ستون را در مایگریشن خود اضافه کنید:
این کار با استفاده از متد softDeletes()
یک ستون deleted_at
به جدول شما اضافه میکند که بهطور خودکار تاریخ و زمان حذف رکوردها را ذخیره میکند.
اگر جدول شما قبلاً ایجاد شده و ستون deleted_at
را نداشته باشد، میتوانید یک مایگریشن جدید برای اضافه کردن این ستون بنویسید:
سپس در فایل مایگریشن جدید، ستون deleted_at
را اضافه کنید:
برای حذف یک رکورد بهطور نرم از متد delete()
استفاده میکنید:
این کد رکورد با شناسه 1
را از جدول حذف نمیکند، بلکه فقط تاریخ و زمان حذف را در ستون deleted_at
ذخیره میکند.
به طور پیشفرض، رکوردهای حذفشده در نتایج جستجو شامل نمیشوند. اگر بخواهید رکوردهای حذفشده را هم در نتایج جستجو شامل کنید، میتوانید از متد withTrashed()
استفاده کنید:
این دستور تمام رکوردهای جدول را (اعم از حذفشده و غیرحذفشده) باز میگرداند.
اگر فقط رکوردهای حذفشده را بخواهید، از متد onlyTrashed()
استفاده کنید:
این دستور فقط رکوردهایی را باز میگرداند که بهطور نرم حذف شدهاند.
برای بازیابی یک رکورد حذفشده، میتوانید از متد restore()
استفاده کنید:
این دستور رکورد حذفشده با شناسه 1
را دوباره بازیابی میکند و مقدار ستون deleted_at
را به null
تغییر میدهد.
اگر بخواهید رکوردی را به طور دائمی حذف کنید (یعنی از پایگاه داده حذف شود)، میتوانید از متد forceDelete()
استفاده کنید:
این دستور رکورد با شناسه 1
را به طور دائمی از پایگاه داده حذف میکند.
امکان بازیابی رکوردها: با استفاده از Soft Deletes، میتوانید رکوردهایی که به اشتباه حذف شدهاند را بازیابی کنید.
حفظ تاریخچه: رکوردها همچنان در پایگاه داده باقی میمانند و میتوانند برای اهداف گزارشگیری یا تجزیه و تحلیل استفاده شوند.
عدم از دست رفتن اطلاعات: بهدلیل نگهداری دادهها در پایگاه داده، هیچگونه اطلاعات مهمی از دست نمیرود.
سهولت در پیادهسازی: استفاده از Soft Deletes در لاراول بسیار ساده است و تنها با اضافه کردن یک ویژگی و ستون در مایگریشن، قابل استفاده است.
Soft Deletes یک ویژگی قدرتمند در لاراول است که به شما این امکان را میدهد که رکوردها را بهجای حذف دائمی، بهطور نرم حذف کنید. این ویژگی بهویژه برای اپلیکیشنهایی که نیاز به نگهداری تاریخچه دادهها دارند یا میخواهند از حذف تصادفی رکوردها جلوگیری کنند، مفید است. با استفاده از این ویژگی، میتوانید رکوردها را به راحتی بازیابی یا حذف دائمی کنید و از حذفهای اشتباه جلوگیری کنید.