Laravel 模型事件已经监听方式大全

顺其自然只是无能为力的另一种说法。

 

Eloquent 模型事件和监听方式大全

所有支持的模型事件

  • retrieved:获取到模型实例后触发
  • creating:插入到数据库前触发
  • created:插入到数据库后触发
  • updating:更新到数据库前触发
  • updated:更新到数据库后触发
  • saving:保存到数据库前触发(插入/更新之前,无论插入还是更新都会触发)
  • saved:保存到数据库后触发(插入/更新之后,无论插入还是更新都会触发)
  • deleting:从数据库删除记录前触发
  • deleted:从数据库删除记录后触发
  • restoring:恢复软删除记录前触发
  • restored:恢复软删除记录后触发

注:批量更新时不会触发相应事件,因为是直接走查询构建器完成的,绕过了模型方法

 

1、通过静态方法监听模型事件

 1 // app/Providers/EventServiceProvider.php
 2 
 3 public function boot()
 4 {
 5     parent::boot();
 6 
 7     // 监听模型获取事件
 8     User::retrieved(function ($user) {
 9         Log::info('从模型中获取用户[' . $user->id . ']:' . $user->name);
10     });
11 }

 

2、通过订阅者监听模型事件

 

3、通过观察者监听模型事件

 

如何选择,视情况而定。如果只是监听一两个模型事件,第一种方式比较合适;如果仅仅监听系统支持的模型事件,并且要监听多个模型的多个事件,观察者是最佳选择;如果还要在模型类上监听更多系统模型事件之外的自定义事件,则使用订阅者来监听比较合适。

 

posted @ 2022-02-21 09:02  方达达  阅读(51)  评论(0编辑  收藏  举报