0

You have no items in your shopping cart.

0

ورود به سایت

نام کاربری *
رمز عبور *
مرا بخاطر بسپار

ایجاد حساب کاربری

فیلدهای ستاره دار الزامی است.
نام *
نام کاربری *
رمز عبور *
تایید رمز عبور *
ایمیل *
تایید ایمیل *
کپچا *
امتیاز
(2 )

سطل زباله مطالب در لاراول با SoftDeletes

سطل زباله مطالب در لاراول با SoftDeletes

سطل زباله مطالب در لاراول با SoftDeletes

SoftDeletes یکی دیگه از اون trait های جالب توی لاراول هست که به شما امکان میده مثل سیستم های مدیریت محتوای وردپرس و جوملا ، برای قسمت های مختلف پروژه خودتون مثل بخش مطالب ، کاربران و ... یک سطل زباله ایجاد کنید!! با ساختن این سطل زباله بجای اینکه مثلا مطالب خودتونو یکدفعه با متد delete حذف کنید و از دیتابیس پاک کنید ، اون مطالب رو میفرستید به سطل زباله و از دیتابیس شما چیزی حذف نمیشه و هر وقت که مایل بودید میتونید کامل حذف کنید و یا restore کنید و مطالب رو برگردونید.به این کار تو لاراول میگیم SoftDelete یعنی همون حذف کردن نرم!

مطلب پیشنهادی: آموزش رایگان لاراول

شرح عملکرد softDeletes

فرض کنید ما قصد داریم روی جدول مطالب خودمون softDelete رو اعمال کنیم.برای اینکار باید یک فیلد به اسم deleted_at به این جدول اضافه کنیم.بعد از اینکار توی کنترلر خودتون زمان استفاده از متد delete بجای اینکه مطلب شما حذف بشه ، فیلد deleted_at با یک مقدار تاریخ پر میشه ! اینجاست که ما میفهمیم این مطلب جز trash شده است.اگر هم خواستیم کامل از دیتابیس حذفش کنیم بجای متد delete از forceDelete استفاده میکنیم که توی این آموزش همه ی این موارد رو توضیح میدم.

ساخت فیلد deleted_at

در ابتدا باید روی جدولی که میخاید این ویژگی رو براش ایجاد کنید یک فیلد اضافه تعریف کنید به اسم deleted_at که البته میتونید یک migration به صورت زیر بسازید که خودش اینکارو برای شما روی جدول مربوطه انجام میده:

Schema::table('articles', function (Blueprint $table) {
    $table->softDeletes();
});

دقت کنید که اگه خودتونو به صورت دستی فیلد deleted_at رو خواستید بسازید باید از نوع timestamp باشه

تغییرات در model

بعد از اضافه کردن فیلد deleted_at حالا باید trait softDeletes رو در model خودتون use کنید.به کدهای زیر دقت کنید که ما در model مربوط به ArticleModel خودمون اینکار انجام دادیم:

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Article extends Model
{
    use SoftDeletes;
}

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

حالا اگر خواستید که توی لیست مطالب خودتون ، اون مطالبی رو هم که softDelete شده رو هم بیارید و نمایش بدید ، باید به صورت زیر eloquent استفاده کنید:

$articles = App\Article::withTrashed()->get();

و اگر خواستید که فقط مطالبی که softDelete شده است رو نشون بدید از eloquent زیر استفاده کنید:

$articles = App\Article::onlyTrashed()->get();

اگر خواستید که یک مطلب رو از softDelete خارج کنید و مجدد بازیابی کنید و برگردونید به مطالب اصلی از متد restore میتونید به صورت زیر استفاده کنید:

App\Article::withTrashed()
        ->where('id', 1)
        ->restore();

تو مثال بالا ما مطلب با آی دی 1 رو restore کردیم.با اینکار مقدار موجود در فیلد deleted_at پاک میشه! به همین راحتی

و در آخر اگر نیاز بود که مطلبی رو حتما و حتما پاک کنید و از دیتابیس هم پاک بشه خیلی راحت و ساده متد forceDelete رو بجای delete استفاده کنید و تامام!

$article->forceDelete();

هاست لاراول: هاست لاراول



میتوانید این مطلب را چاپ و یا به صورت PDF دانلود کنید

چاپ/PDF

نظرات (6)

  1. حسین

اموزش های پیشرفته لاراول

مخصوصا api

با تشکر

واقعا شیوه اموزشتون بسیار زیباس و جذاب

  1. مصطفی

ببخشید استاد عزیز تقریبا چند روز دیگه آموزش های تکمیلی لااول و vue و... رو میذارین رو سایت؟

  1. ابوالفضل طالبی    مصطفی

از اواخر دی ماه استارت دوره های جدید میخوره

  1. مصطفی    ابوالفضل طالبی

الآن اواخر دی ماهه...
اساسی منتظریم... ایشالا این سری یکمی بیشتر سرعت عمل به خرج بدین... پیشاپیش خیییییلی خیلی ممنون...

  1. مصطفی

و کماکان منتظریم............!

  1. مصطفی

بی صبرانه منتظر دوره های تکمیلی لاراولتون هستیم.....

نظری ثبت نشده است

سوالات و نظرات خود را ثبت نمایید.سوالات و نظرات توسط مدیران سایت پاسخ داده میشوند

ارسال نظر به صورت میهمان ثبت نام کنید و یا وارد شوید به حساب کاربری خودتان
پیوست ها (0 / 3)
Share Your Location
76 دوره ی آموزشی
32,683 دانشجو
933,257 بار دانلود

برخی نظرات کاربران

سلام استاد عزیز، بنده چند سال پیش با شما دوره PHP برداشته بودم و باید بگم من PHP رو از شما دارم ، انقدر که روان و کاربردی توضیح داده بودین و هنوز فیلمهای اون جلسات رو برای خودم مرور میکنم، اما چند وقتی بود با لاراول شروع به کار کردم تا اینکه توی جستجوهام به این آموزش شما رسیدم و تا ا...
درود..من قبلا با لاراول در حد متوسط کار کردم..تصادفا با سایتتون آشنا شدم و فیلمای لاراول رو گرفتم و دیدم..متونم بگم یکی از بهترین های وب ایران میتونه باشه این دوره..از استاد عزیز این دوره آقای طالبی نهایت تشکر رو دارم..و بیصبرانه منتظر ادامه ی این دوره م..پر انرژی تر از قبل به کارت
سلام استاد عزیز، داشتم به این فکر میکردم که اگه کسی بخواد لاراول یاد بده واقعا میشه از این بهتر بگه یا نه؟! به این نتیجه سیدم که واقعاااااا عالییییییه.... واقعا ممنونم... ایشالا که خیییل زود تکمیل بشه و من هم که دیگه گمونم معتاد آموزش هاتون شدم و باید بقیه ی آموزش های سایت رو هم کم
سلام استاد عزیز ممنون از تدریس فوق العاده تون خیلی خیلی عالیه. میخواستم خواهش کنم اگر ممکنه سایت نهایی رو به روش restfull api پیاده سازی بفرمایید تشکر فراوان از زحمات شما .

الف یار- مهارت بیشتر ، درآمد بیشتر

الف یار مرجع آموزشهای حرفه ای در زمینه ی برنامه نویسی و طراحی وب از سال 1390 فعالیت خود را آغاز کرده است و تا کنون ویدیو های آموزشی متفاوت و جامعی را به مخاطبان خود ارائه کرده است.
الفیار دارای مجوز نشر دیجیتال به شماره 2858 از وزارت ارشاد میباشد و کپی برداری و نشر محصولات آموزشی الفیار شرعا حرام و دارای پیگرد قانونی خواهد بود