因為某些時候需要在很多model裡面加入一些儲存前儲存後的事件
比如
- 表
created_by
updated_by
欄位自動維護
這種情況頭一次想的是用 observer
或者直接監聽 model 儲存新增事件
機緣巧合下看到一篇文章 關於laravel orm載入trait的技巧 原文
實現方案
// app/Model/Traits/UserStamps
trait Usertamps{
public static function bootUserStamps()
{
static::creating(function (Model $model) {
// 設定 created_by 欄位的值為當前登入的使用者ID
$model->created_by = auth()->id();
});
static::updating(function (Model $model) {
// 設定 updated_by 欄位的值為當前登入的使用者ID
$model->updated_by = auth()->id();
});
}
}
這樣只需要在用到的model直接use這個類即可。
大概語法是
initializeUserStamps
每次例項化新模型的時候都會呼叫bootUserStamps
這個應該是類似與 model::booted()裡面執行
本作品採用《CC 協議》,轉載必須註明作者和本文連結