Soft Deleting چیست؟
Soft Deleting یا حذف نرم به شما کمک می کند که بدون حذف سطری از جدول به صورت نرم این سطر را از نتایج کوئری های خود خارج کنید و یک فیلد با نام deleted_at به تمام سطرها اضافه می کند null بودن این فیلد به منزله حذف و در صورت حذف با تاریخ و زمان دقیق درخواست مقداردهی می شود. به صورت عملی نیز شما در هنگام ساختن یک جدول برای افزودن این ویژگی کد زیر را به migration خود اضافه کنید
$table->softDeletes();
و در مدل مورد نظر کد ذیل را اضافه می کنیم
use Illuminate\Database\Eloquent\SoftDeletes; // کتابخانه حذف نرم که در قسمت کتابخانه های کلاس مورد نظر افزوده می شود
use SoftDeletes; // فراخونی داخل بدنه کلاس مورد نظر
مثال Soft Deleting
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Flight extends Model
{
use SoftDeletes; }
کوئری های soft deleting
برای فراخوانی سطرهای حذف شده همراه با کوئری از withTrashed استفاده می کنیم به مثال ذیل دقت کنید
$flights = App\Flight::withTrashed()
->where('account_id', 1)
->get();
برای فراخونی سطرهای حذف شده بدون سطرهای دیگر از onlyTrashed استفاده می کنیم به مثال ذیل دقت کنید
$flights = App\Flight::onlyTrashed()
->where('airline_id', 1)
->get();
بعضی اوقات شاید به اشتباه یک داده را حذف نرم کنید برای بازگردانی باید از قطعه کد زیر استفاده کنید
$flight->restore();
بحث soft delete گسترده تر می باشد و بنا به پروژه ای که انجام می دهید می توانید از امکانات مختلف آن استفاده کنید