Laravel 8 事件
Eloquent 模型触发几个事件,允许你挂接到模型生命周期的如下节点: retrieved、creating、created、updating、updated、saving、saved、deleting、deleted、restoring、restored、replicating。事件允许你每当特定模型保存或更新数据库时执行代码。每个事件通过其构造器接受模型实例。
retrieved 事件在现有模型从数据库中查找数据时触发。当新模型每一次保存时,creating 和 created 事件被触发。如果数据库中已经存在模型并且调用了 save 方法,updating / updated 事件被触发。这些情况下,saving / saved 事件也被触发。
注意:通过 Eloquent 进行批量更新时,被更新模型的
saved和updated,deleting和deleted事件不会被触发。这是因为批量更新时,并没有真的获取模型。
首先,在 Eloquent 模型上定义一个 $dispatchesEvents 属性,将 Eloquent 模型生命周期的几个节点映射到你自己的 event 类:
<?php
namespace App\Models;
use App\Events\UserDeleted;
use App\Events\UserSaved;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* 模型的事件映射
*
* @var array
*/
protected $dispatchesEvents = [
'saved' => UserSaved::class,
'deleted' => UserDeleted::class,
];
} 定义并且映射了 Eloquent 事件,就可以使用 事件监听处理这些事件了。