مارک پلاس

تکنولوژی نوین اینترنتی

Soft Deletes حذف نرم لاراول

دسته‌بندی‌ها

Soft Deletes حذف نرم لاراول
Soft Deletes حذف نرم لاراول


Soft Deletes در لاراول یک ویژگی است که به شما این امکان را می‌دهد تا رکوردها را به‌جای حذف دائمی، به‌طور نرم (soft) حذف کنید. به این معنی که رکوردهای حذف‌شده هنوز در پایگاه داده وجود دارند، اما از نظر اپلیکیشن به عنوان "حذف‌شده" علامت‌گذاری می‌شوند و دیگر در نتایج جستجو ظاهر نمی‌شوند.

این ویژگی برای جلوگیری از حذف دائمی داده‌ها و قابلیت بازگرداندن آن‌ها در آینده بسیار مفید است.


📌 ویژگی‌های Soft Deletes

  • حذف نرم‌افزاری: رکوردها به‌جای حذف فیزیکی، تنها یک علامت در پایگاه داده (مثلاً یک ستون تاریخ و زمان) می‌گیرند که نشان‌دهنده حذف بودن آن‌ها است.

  • بازگردانی رکوردها: رکوردهای حذف‌شده می‌توانند به‌راحتی بازیابی شوند.

  • حفظ یکپارچگی داده‌ها: از آنجا که رکوردها فیزیکی حذف نمی‌شوند، هیچ‌گونه اطلاعات مهمی از دست نمی‌رود و تاریخچه داده‌ها محفوظ می‌ماند.


🛠️ نحوه استفاده از Soft Deletes در لاراول

1. فعال‌سازی Soft Deletes در مدل

برای استفاده از Soft Deletes ابتدا باید ویژگی SoftDeletes را در مدل خود اضافه کنید. برای مثال، اگر یک مدل Post دارید، باید کد زیر را در آن مدل قرار دهید:

php
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Post extends Model { use SoftDeletes; // سایر ویژگی‌ها و متدهای مدل }

این کار باعث می‌شود که لاراول بتواند رکوردها را به‌صورت نرم حذف کند.

2. ایجاد ستون deleted_at در جدول

برای اینکه Soft Deletes کار کند، نیاز است که جدول شما یک ستون به نام deleted_at داشته باشد که تاریخ و زمان حذف رکورد را ذخیره کند. برای این منظور باید هنگام ساخت جدول، این ستون را در مایگریشن خود اضافه کنید:

php
Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); $table->softDeletes(); // این خط ستون deleted_at را اضافه می‌کند });

این کار با استفاده از متد softDeletes() یک ستون deleted_at به جدول شما اضافه می‌کند که به‌طور خودکار تاریخ و زمان حذف رکوردها را ذخیره می‌کند.

اگر جدول شما قبلاً ایجاد شده و ستون deleted_at را نداشته باشد، می‌توانید یک مایگریشن جدید برای اضافه کردن این ستون بنویسید:

php
php artisan make:migration add_deleted_at_to_posts_table --table=posts

سپس در فایل مایگریشن جدید، ستون deleted_at را اضافه کنید:

php
public function up() { Schema::table('posts', function (Blueprint $table) { $table->softDeletes(); }); } public function down() { Schema::table('posts', function (Blueprint $table) { $table->dropColumn('deleted_at'); }); }

3. حذف نرم‌افزاری رکوردها

برای حذف یک رکورد به‌طور نرم از متد delete() استفاده می‌کنید:

php
$post = Post::find(1); $post->delete();

این کد رکورد با شناسه 1 را از جدول حذف نمی‌کند، بلکه فقط تاریخ و زمان حذف را در ستون deleted_at ذخیره می‌کند.

4. دریافت رکوردهای حذف‌شده

به طور پیش‌فرض، رکوردهای حذف‌شده در نتایج جستجو شامل نمی‌شوند. اگر بخواهید رکوردهای حذف‌شده را هم در نتایج جستجو شامل کنید، می‌توانید از متد withTrashed() استفاده کنید:

php
$posts = Post::withTrashed()->get();

این دستور تمام رکوردهای جدول را (اعم از حذف‌شده و غیرحذف‌شده) باز می‌گرداند.

5. دریافت فقط رکوردهای حذف‌شده

اگر فقط رکوردهای حذف‌شده را بخواهید، از متد onlyTrashed() استفاده کنید:

php
$posts = Post::onlyTrashed()->get();

این دستور فقط رکوردهایی را باز می‌گرداند که به‌طور نرم حذف شده‌اند.

6. بازیابی رکوردهای حذف‌شده

برای بازیابی یک رکورد حذف‌شده، می‌توانید از متد restore() استفاده کنید:

php
$post = Post::withTrashed()->find(1); $post->restore();

این دستور رکورد حذف‌شده با شناسه 1 را دوباره بازیابی می‌کند و مقدار ستون deleted_at را به null تغییر می‌دهد.

7. حذف دائمی رکوردها

اگر بخواهید رکوردی را به طور دائمی حذف کنید (یعنی از پایگاه داده حذف شود)، می‌توانید از متد forceDelete() استفاده کنید:

php
$post = Post::find(1); $post->forceDelete();

این دستور رکورد با شناسه 1 را به طور دائمی از پایگاه داده حذف می‌کند.


مزایای استفاده از Soft Deletes

  1. امکان بازیابی رکوردها: با استفاده از Soft Deletes، می‌توانید رکوردهایی که به اشتباه حذف شده‌اند را بازیابی کنید.

  2. حفظ تاریخچه: رکوردها همچنان در پایگاه داده باقی می‌مانند و می‌توانند برای اهداف گزارش‌گیری یا تجزیه و تحلیل استفاده شوند.

  3. عدم از دست رفتن اطلاعات: به‌دلیل نگهداری داده‌ها در پایگاه داده، هیچ‌گونه اطلاعات مهمی از دست نمی‌رود.

  4. سهولت در پیاده‌سازی: استفاده از Soft Deletes در لاراول بسیار ساده است و تنها با اضافه کردن یک ویژگی و ستون در مایگریشن، قابل استفاده است.


🛠️ جمع‌بندی

Soft Deletes یک ویژگی قدرتمند در لاراول است که به شما این امکان را می‌دهد که رکوردها را به‌جای حذف دائمی، به‌طور نرم حذف کنید. این ویژگی به‌ویژه برای اپلیکیشن‌هایی که نیاز به نگهداری تاریخچه داده‌ها دارند یا می‌خواهند از حذف تصادفی رکوردها جلوگیری کنند، مفید است. با استفاده از این ویژگی، می‌توانید رکوردها را به راحتی بازیابی یا حذف دائمی کنید و از حذف‌های اشتباه جلوگیری کنید.

محتوای مرتبط

پست‌های مرتبط