nicoaudy/ignoreable-observers

动态禁用/启用 Laravel 的 Eloquent 模型观察者

dev-master 2018-11-19 04:33 UTC

This package is auto-updated.

Last update: 2024-09-19 18:11:58 UTC


README

动态禁用/启用 Laravel 的 Eloquent 模型观察者。这个库提供了临时禁用 Eloquent 模型可观察事件的能力。例如,在执行大量数据库插入或更新时,可以临时禁用触发电子邮件、推送通知或排队计算的观察者。

安装

使用 composer 安装

composer require nicoaudy/ignoreable-observers

用法

要使 Eloquent 模型能够临时忽略观察者,只需添加 IgnorableObservers 特性

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
use IgnorableObservers\IgnorableObservers;

class ExampleModel extends Model {
  use IgnorableObservers;
}

然后,调用 ignoreObservableEvents() 静态方法来忽略该模型的所有观察者

ExampleModel::ignoreObservableEvents();

ignoreObservableEvents() 方法还接受一个要忽略的观察者数组。例如,以下行将仅忽略 savedcreated 观察者

ExampleModel::ignoreObservableEvents(['saved', 'created']);

要停止忽略模型观察者,调用 unignoreObservableEvents() 静态方法

ExampleModel::unignoreObservableEvents();

unignoreObservableEvents() 方法 接受一个要取消忽略的观察者数组,让您完全控制哪些观察者启用和禁用

ExampleModel::unignoreObservableEvents(['saved']);

示例

以下示例忽略 ExampleModel 的任何 savedcreated 观察者,插入 100 行到数据库,并在操作完成后取消忽略这些观察者

ExampleModel::ignoreObservableEvents('saved', 'created');

for ( $i = 0; $i <= 100; $i++ ) {
  ExampleModel::create([
    'data' => $i
  ]);
}

ExampleModel::unignoreObservableEvents();

许可

Ignorable Observers 是一个开源库,许可协议为 MIT。