Laravel Model updating&updated 事件使用注意事项

1 触发条件

1.1 updating

1.1.1 如果字段无变化,不会触发此事件。

1.1.2 除非更改至少一个字段的值

2 事件逻辑不会覆盖

2.1 Trait 中定义事件如下

/**
* The boot method.
*/
public static function bootHasArchive()
{
static::creating(function ($model) {
Log::info(__FILE__);
});

static::updating(function ($model) {
Log::info(__FILE__);
});

static::deleting(function ($model) {
if ($archive = $model->archive) {
$archive->delete();
}
});
}

2.2 Observer 中定义事件如下:
public function creating(News $news)
{
Log::info(__FILE__);
}

public function updating(News $news)
{
Log::info(__FILE__);
}

2.3 两个位置定义的逻辑都会执行
2.4 顺序是: trait->observer
3 结论
3.1 update 事件用来处理 model changed 的逻辑
3.2 模型数据不变,点击更新这样的逻辑,放在控制器方法中,而不应放在模型的事件中

原文地址:https://www.cnblogs.com/mouseleo/p/11691449.html