Laravel 5.6 - 模型事件:你可以将static :: creation和static :: updates组合在一起吗?

时间:2018-04-25 10:20:27

标签: php laravel laravel-5

我有模特活动:

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

    static::creating(function ($questionnaire) {
        // Same code here
    });

    static::updating(function ($questionnaire) {
        // Same code here
    });
}

有没有一种方法可以将创建和更新结合在一起,还是最好将相同的代码放在某种部分中以便在每个事件中重用?

2 个答案:

答案 0 :(得分:4)

https://laravel.com/docs/5.6/eloquent#events

  

首次保存新模型时,将触发创建和创建的事件。如果数据库中已存在模型并且调用了save方法,则将触发更新/更新事件。但是,在这两种情况下,保存/保存的事件都将触发。

在创建或更新模型时会触发保存事件。

答案 1 :(得分:0)

您可以这样处理...

// store the events you want to capture
protected static $updateOnEvents = ['saved','deleted',...];

protected static function booted()
{
    // loop through them and apply the logic
    foreach (static::$updateOnEvents as $event) {
        static::$event(function($questionnaire){
            // your code here
        }); 
    }
}

请注意,Laravel 7.x提供了booted方法,如果您使用的是较低版本,则可以使用booting ...