راکت
حل شده

booted و booting و boot در مدل

2 پاسخ

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

    protected static function booted() {  }

این متد چیکار میکنه؟ کاربردش چیه؟
درضمن فرقش با متد های booting و boot چی هست؟

مجید
مجید
@MajidDeveloper
ثبت پرسش جدید

پاسخ‌ها

2
مهدی مهدوی
مهدی مهدوی
@mehdi.mahdavi97

تخصص: تازه وارد

بهترین پاسخ

سلام
درمورد boot متدی هست که داخل اون میتونیم رفتار مدل رو تغییر بدیم
فرض کنید فیلدی به اسم order_id داریم که میخوایم وقتی مدل سیو شد به صورت رندوم مقدار بگیره میتونیم داخل boot این کار را انجام بدیم یا میتونیم listenter روی event ها مدل قرار بدیم یا ...

 protected static function boot() {
        parent::boot();

        static::creating(function ($order) {

        });
    }

اگر Model لاراول رو بررسی کنیم داخل متد __construct متدی به اسم bootIfNotBooted صدا زده شده
که اگر توضیحات و کدهاش رو ببینیم چک میکنه که اگر قبلا این مدل بوت نشده بود عملیات بوت این مدل را انجام بده
قبل از boot متد bootig و بعد از boot متد booted صدا زده میشه
که اگر به کدهای زیر دقت کنید خود متد boot متدی به نام bootTraits صدا میزنه که وظیفه ی بوت کردن تمام trait های مدل رو داره

 /**
     * Check if the model needs to be booted and if so, do it.
     *
     * @return void
     */
    protected function bootIfNotBooted()
    {
        if (! isset(static::$booted[static::class])) {
            static::$booted[static::class] = true;

            $this->fireModelEvent('booting', false);

            static::booting();
            static::boot();
            static::booted();

            $this->fireModelEvent('booted', false);
        }
    }

    /**
     * Perform any actions required before the model boots.
     *
     * @return void
     */
    protected static function booting()
    {
        //
    }

    /**
     * Bootstrap the model and its traits.
     *
     * @return void
     */
    protected static function boot()
    {
        static::bootTraits();
    }

  /**
     * Perform any actions required after the model boots.
     *
     * @return void
     */
    protected static function booted()
    {
        //
    }
مجید
مجید
@MajidDeveloper

تخصص: Laravel-Nuxt

کسی اطلاعاتی راجع به این بحث نداره؟

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام