shiftonelabs / laravel-db-events
添加额外的数据库事件。
Requires
- php: >=5.4.0
- illuminate/database: >=4.1
- illuminate/support: >=4.1
Requires (Dev)
- laravel/framework: >=4.1
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: 2.*
This package is auto-updated.
Last update: 2024-09-13 07:54:00 UTC
README
此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)。有关更多信息,请参阅 许可证文件。