dariusiii/laravel-database-trigger

一个用于将数据库触发器添加到Laravel迁移的包

v5.0.0 2022-02-08 07:33 UTC

README

Software License Build Status

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

事件对象表

事件对象表是触发器关联的表名称。

动作时机

触发器的激活时间。可能的值是 afterbefore

after - 在对事件对象表进行更改后处理动作。

before - 在对事件对象表进行更改之前处理动作。

事件

激活触发器的事件。触发器事件可以是 insertupdatedelete

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) 许可。