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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM