robinhoo1973/laravel-database-trigger-5.8

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

1.0 2019-03-25 02:35 UTC

This package is auto-updated.

Last update: 2024-09-25 16:21:00 UTC


README

Software License Build Status StyleCI

Laravel 数据库触发器提供了一种向 Laravel 迁移添加数据库触发器的方法,就像您会向数据库表添加一样。触发器是一个与表相关联的命名数据库对象,在表的特定事件发生时激活。有关触发器的更多信息,请参阅这里

安装

Laravel 数据库触发器需要至少 PHP 7.1。此特定版本至少支持 Laravel v5.5。该包目前仅支持 MySQL。

要获取最新版本,只需使用 Composer 包含该包。

$ composer require ntimyeboah/laravel-database-trigger

安装后,如果您没有使用自动包发现,那么您需要在您的 config/app.php 中注册 TopviewDigital\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 TopviewDigital\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 数据库触发器采用MIT 许可协议 (MIT)授权。