我有模特活动:
protected static function boot()
{
parent::boot();
static::creating(function ($questionnaire) {
// Same code here
});
static::updating(function ($questionnaire) {
// Same code here
});
}
有没有一种方法可以将创建和更新结合在一起,还是最好将相同的代码放在某种部分中以便在每个事件中重用?
答案 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
...