Laravel 8 事件

2021-07-19 11:33 更新

Eloquent 模型触发几个事件,允许你挂接到模型生命周期的如下节点: retrievedcreatingcreatedupdatingupdatedsavingsaveddeletingdeletedrestoringrestoredreplicating。事件允许你每当特定模型保存或更新数据库时执行代码。每个事件通过其构造器接受模型实例。

retrieved 事件在现有模型从数据库中查找数据时触发。当新模型每一次保存时,creatingcreated 事件被触发。如果数据库中已经存在模型并且调用了 save 方法,updating / updated 事件被触发。这些情况下,saving / saved 事件也被触发。

注意:通过 Eloquent 进行批量更新时,被更新模型的 savedupdated, deletingdeleted 事件不会被触发。这是因为批量更新时,并没有真的获取模型。

首先,在 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 事件,就可以使用 事件监听处理这些事件了。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号