آموزش Soft Deleting (حذف نرم) در لاراول

آموزش Soft Deleting (حذف نرم) در لاراول

آموزش Soft Deleting (حذف نرم) در لاراول همراه با مثال در جاب تیم از مجموعه آموزش لاراول در این مطلب آموزش داده می شود. همیشه در پروژه ها نیازمند پیاده سازی حذف نرم  بوده ایم و هر تیم برنامه نویسی با روش و ساز و کار خودشان این کار را انجام می دادند. مثلا با افزودن یک فیلد boolean  که با مقدار true و false که نشان می داد این سطر از جدول خذف شده است یا نه !  و برای این کار نیز باید کدهایی به model های مربوطه اضافه می شد. لاراول در نسخه های جدید Soft Deleting را اضافه کرد و با اضافه شدن حذف نرم به لاراول بسیاری از پیچیدگی ها کم شد و نیازی به پیاده سازی این مراحل نیست

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

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 گسترده تر می باشد و بنا به پروژه ای که انجام می دهید می توانید از امکانات مختلف آن استفاده کنید

بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

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