阅读(1948)
赞(9)
Laravel 8 事件
2021-07-07 11:41:11 更新
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 事件,就可以使用 事件监听处理这些事件了。