مجید
3 سال پیش توسط مجید مطرح شد
2 پاسخ

booted و booting و boot در مدل

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

    protected static function booted() {  }

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


ثبت پرسش جدید
مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 3 سال پیش مطرح شد
2

سلام
درمورد 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()
    {
        //
    }

مجید
تخصص : Laravel-Nuxt
@MajidDeveloper 3 سال پیش مطرح شد
0

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


مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 3 سال پیش مطرح شد
2

سلام
درمورد 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()
    {
        //
    }

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

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