dariusiii / 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
This package is auto-updated.
Last update: 2024-09-12 04:14:37 UTC
README
Laravel Database Trigger 提供了一种方法,可以将数据库触发器添加到 Laravel 迁移中,就像添加数据库表一样。触发器是与表相关联的命名数据库对象,当表发生特定事件时被激活。有关触发器的更多信息,请参阅这里。
安装
Laravel Database Trigger 至少需要 PHP 7.3。这个特定版本支持 Laravel v8.*。请查看下表了解支持的版本。
该包目前仅支持 MySQL。
要获取最新版本,只需使用 Composer 安装包。
$ composer require ntimyeboah/laravel-database-trigger
安装完成后,如果您没有使用自动包发现,则需要在您的 config/app.php
中注册 NtimYeboah\LaravelDatabaseTrigger\TriggerServiceProvider
服务提供者。
使用方法
使用 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
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全性
如果您在此包中发现安全漏洞,请发送电子邮件至 ntimobedyeboah@gmail.com。所有安全漏洞都将得到及时解决。
许可证
Laravel Database Trigger 根据 MIT 许可证 (MIT) 许可。