zachflower/ignorable-observers

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

v0.2.0 2020-01-28 13:43 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:14 UTC


README

Code Climate build Packagist

动态禁用/启用 Laravel 的 Eloquent 模型观察者。此库提供了暂时禁用 Eloquent 模型可观察事件的选项。例如,在执行大量数据库插入或更新操作时,暂时禁用启动电子邮件、推送通知或队列计算的观察者。

安装

使用 composer 安装

composer require zachflower/ignorable-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();

贡献

  1. 分叉它
  2. 创建您的功能分支 (git checkout -b my-new-feature)
  3. 提交您的更改 (git commit -am 'Add some feature')
  4. 推送到分支 (git push origin my-new-feature)
  5. 创建新的 拉取请求

许可

Ignorable Observers 是一个在 MIT 许可下授权的开源库。