【问题标题】:Avoid execution of Laravel boot() function's events in eloquent model避免在 eloquent 模型中执行 Laravel boot() 函数的事件
【发布时间】:2016-07-01 10:10:13
【问题描述】:

我的模型中有一个boot() 函数,看起来像这样,

public static function boot() { 

    parent::boot();

    // new item created 
    static::created(function($proof) {
      //Fire an event
    }
}

每次我触发这样的事情时,创建的函数都会触发,$proof->save()

有没有办法绕过触发创建的函数,在某些情况下我不想在该方法中运行该功能?

如果有什么不同,我正在运行 Laravel 4.2

【问题讨论】:

    标签: php oop laravel-4 eloquent


    【解决方案1】:

    在创建之前运行flushEventListeners()。示例:

    $data = [];
    
    if ( //SOMETHING ) {
        User::flushEventListeners();
    } 
    
    User:create($data);
    

    请注意,这将阻止所有事件触发,而不仅仅是创建

    【讨论】:

    • 假设它只会为那个实例做它?之后我不需要“unflush”?
    • @Udders 是的,这仅适用于正在调用它的模型并且仅适用于当前请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2015-10-11
    • 2016-09-11
    • 2017-05-08
    • 2023-03-03
    • 2015-07-26
    相关资源
    最近更新 更多