ntimyeboah/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

安装完成后,如果您没有使用自动包发现,则需要将 NtimYeboah\LaravelDatabaseTrigger\TriggerServiceProvider 服务提供程序注册到您的 config/app.php 文件中。

用法

使用 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

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

如果您在此包中发现安全漏洞,请通过电子邮件发送到 Ntim Yeboah 的 ntimobedyeboah@gmail.com。所有安全漏洞都将得到及时处理。

许可证

Laravel Database Trigger 在 The MIT License (MIT) 许可下发布。