shiftonelabs/laravel-db-events

添加额外的数据库事件。

1.0.0 2016-11-01 04:40 UTC

This package is auto-updated.

Last update: 2024-09-13 07:54:00 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

此Laravel/Lumen包为Illuminate数据库包提供了额外的事件。目前,此包添加了以下事件:

  • 一个在连接数据库之前触发的 DatabaseConnecting 事件,可以修改配置或取消连接
  • 一个在连接数据库之后触发的 DatabaseConnected 事件
  • 一个在数据库连接被 DatabaseConnecting 事件取消时抛出的 ConnectingException 运行时异常

可以根据需求添加更多事件。

安装

通过Composer

$ composer require shiftonelabs/laravel-db-events

一旦更新了Composer并安装了包,就需要加载服务提供者。

对于Laravel 4,打开 app/config/app.php 并将以下行添加到providers数组中

'ShiftOneLabs\LaravelDbEvents\LaravelDbEventsServiceProvider',

对于Laravel 5,打开 config/app.php 并将以下行添加到providers数组中

ShiftOneLabs\LaravelDbEvents\LaravelDbEventsServiceProvider::class,

对于Lumen 5,打开 bootstrap/app.php 并将以下行添加到“注册服务提供者”部分下

$app->register(ShiftOneLabs\LaravelDbEvents\LaravelDbEventsServiceProvider::class);

用法

DatabaseConnecting事件

ShiftOneLabs\LaravelDbEvents\Extension\Database\Events\DatabaseConnecting 事件允许你在连接建立之前钩入数据库连接生命周期。此外,此事件还允许你修改用于连接的配置,以及完全取消连接尝试。

属性

DatabaseConnecting 事件提供了三个公共属性

示例

app('events')->listen('ShiftOneLabs\LaravelDbEvents\Extension\Database\Events\DatabaseConnecting', function ($event) {
    app('log')->info('Connector class: '.get_class($event->connector));
    app('log')->info('Connection name: '.$event->connectionName);
    app('log')->info('Configuration: '.print_r($event->config, true));
});

修改连接配置

你的数据库连接配置通常存储在 config/database.php 文件中(与你的 .env 文件一起)。但是,如果你需要动态修改用于连接的配置,可以在 DatabaseConnecting 事件监听器中完成。在事件监听器中对配置所做的任何更改都将用于数据库连接。

示例

app('events')->listen('ShiftOneLabs\LaravelDbEvents\Extension\Database\Events\DatabaseConnecting', function ($event) {
    // don't connect to mysql in strict mode if you like zeroed out dates
    if (i_like_zero_dates()) {
        $event->config['strict'] = false;
    }
});

取消连接

可能会有一些情况,你不想让数据库尝试连接。在这种情况下,可以通过从 DatabaseConnecting 事件监听器返回 false 来取消数据库连接尝试。如果数据库连接被取消,将抛出 ShiftOneLabs\LaravelDbEvents\Exceptions\ConnectingException 运行时异常。

示例

app('events')->listen('ShiftOneLabs\LaravelDbEvents\Extension\Database\Events\DatabaseConnecting', function ($event) {
    if (not_todaaay()) {
        return false;
    }
});

DatabaseConnected事件

ShiftOneLabs\LaravelDbEvents\Extension\Database\Events\DatabaseConnected 事件允许你在连接建立之后钩入数据库连接生命周期。此外,此事件还提供对用于连接的最终配置以及连接本身的访问。

属性

DatabaseConnected 事件提供了四个公共属性

示例

app('events')->listen('ShiftOneLabs\LaravelDbEvents\Extension\Database\Events\DatabaseConnected', function ($event) {
    app('log')->info('Connector class: '.get_class($event->connector));
    app('log')->info('Connection name: '.$event->connectionName);
    app('log')->info('Configuration: '.print_r($event->config, true));
    app('log')->info('PDO class: '.get_class($event->pdo));
});

贡献

非常欢迎贡献。请参阅 CONTRIBUTING 了解详情。

安全

如果你发现任何安全相关的问题,请通过电子邮件 patrick@shiftonelabs.com 而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件