nicoaudy / ignoreable-observers
动态禁用/启用 Laravel 的 Eloquent 模型观察者
dev-master
2018-11-19 04:33 UTC
Requires
- illuminate/database: ^5.3
Requires (Dev)
- mockery/mockery: ^0.9
- phpunit/phpunit: ~4.0|~5.0
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()
方法还接受一个要忽略的观察者数组。例如,以下行将仅忽略 saved
和 created
观察者
ExampleModel::ignoreObservableEvents(['saved', 'created']);
要停止忽略模型观察者,调用 unignoreObservableEvents()
静态方法
ExampleModel::unignoreObservableEvents();
unignoreObservableEvents()
方法 也 接受一个要取消忽略的观察者数组,让您完全控制哪些观察者启用和禁用
ExampleModel::unignoreObservableEvents(['saved']);
示例
以下示例忽略 ExampleModel
的任何 saved
和 created
观察者,插入 100 行到数据库,并在操作完成后取消忽略这些观察者
ExampleModel::ignoreObservableEvents('saved', 'created'); for ( $i = 0; $i <= 100; $i++ ) { ExampleModel::create([ 'data' => $i ]); } ExampleModel::unignoreObservableEvents();
许可
Ignorable Observers 是一个开源库,许可协议为 MIT。