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 模型數據不變,點擊更新這樣的邏輯,放在控制器方法中,而不應放在模型的事件中