ntimyeboah / laravel-database-trigger
一个用于将数据库触发器添加到 Laravel 迁移的包
Requires
- php: ^7.3|^8.0
- laravel/framework: ^8.75
Requires (Dev)
- mockery/mockery: ^1.4.4
- phpunit/phpunit: ^9.5.10
README
Laravel Database Trigger 允许您像添加数据库表一样,将数据库触发器添加到 Laravel 迁移中。触发器是一个与表关联的命名数据库对象,当表发生特定事件时,它会激活。有关触发器的更多信息,请参阅此处。
安装
Laravel Database Trigger 需要 PHP 7.3 或更高版本。此特定版本支持 Laravel v8.*。请参阅下表以了解支持的版本。
该包目前仅支持 MySQL。
要获取最新版本,请使用 Composer 安装包。
$ composer require ntimyeboah/laravel-database-trigger
安装完成后,如果您没有使用自动包发现,则需要将 NtimYeboah\LaravelDatabaseTrigger\TriggerServiceProvider
服务提供程序注册到您的 config/app.php
文件中。
用法
使用 make:trigger
artisan 命令创建触发器迁移文件。该命令需要触发器名称、事件对象表名称、动作时间和激活触发器的触发事件。
$ php artisan make:trigger after_users_update
事件对象表
事件对象表是触发器关联的表名称。
动作时间
触发器的激活时间。可能的值是 after
和 before
。
after
- 在事件对象表上的更改后处理动作。
before
- 在事件对象表上的更改前处理动作。
事件
激活触发器的事件。触发器事件可以是 insert
、update
和 delete
。
insert
- 在事件对象表上执行插入操作时激活触发器。
update
- 在事件对象表上执行更新操作时激活触发器。
delete
- 在事件对象表上执行删除操作时激活触发器。
以下触发器迁移文件将为使用 after_users_update
作为名称、使用 users
作为事件对象表名称、使用 after
作为动作时间和使用 update
作为事件的触发器生成。
use Illuminate\Database\Migrations\Migration; use NtimYeboah\LaravelDatabaseTrigger\TriggerFacade as Schema; class CreateAfterUsersUpdateTrigger extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('after_users_update') ->on('users') ->statement(function() { return '//...'; }) ->after() ->update(); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users.after_users_update'); } }
从 statement
方法的闭包中返回触发器语句。
以下是一个示例触发器迁移,在更新用户行后向 users_audit
表中插入数据。
... /** * Run the migrations. * * @return void */ public function up() { Schema::create('after_users_update') ->on('users') ->statement(function() { return 'insert into `users_audit` (`name`, `email`) values (old.name, old.email);'; }) ->after() ->update(); } ...
测试
使用以下命令运行测试
$ composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您在此包中发现安全漏洞,请通过电子邮件发送到 Ntim Yeboah 的 ntimobedyeboah@gmail.com。所有安全漏洞都将得到及时处理。
许可证
Laravel Database Trigger 在 The MIT License (MIT) 许可下发布。