esign/laravel-database-trigger

轻松在您的Laravel应用程序中创建数据库触发器

1.4.0 2024-03-12 22:52 UTC

This package is auto-updated.

Last update: 2024-09-13 00:03:16 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

此软件包提供了一种在Laravel应用程序中管理数据库触发器的方法。目前仅支持MySQL

安装

您可以通过composer安装此包

composer require esign/laravel-database-trigger

用法

创建触发器

要创建一个新的数据库触发器,请使用 Schema 门面上的 createTrigger 方法。该方法接受两个参数:第一个是触发器的名称,第二个是一个闭包,该闭包接收一个 DatabaseTrigger 对象,可以用来定义新的触发器

use Esign\DatabaseTrigger\DatabaseTrigger;
use Esign\DatabaseTrigger\Enums\TriggerEvent;
use Esign\DatabaseTrigger\Enums\TriggerTiming;
use Esign\DatabaseTrigger\Facades\Schema;

Schema::createTrigger('my_trigger', function (DatabaseTrigger $trigger) {
    $trigger->on('posts');
    $trigger->event(TriggerEvent::INSERT);
    $trigger->timing(TriggerTiming::BEFORE);
    $trigger->statement("SET NEW.title = 'Default title';");
});

检查触发器存在性

您可以使用 hasTrigger 方法检查触发器的存在性

use Esign\DatabaseTrigger\Facades\Schema;

Schema::hasTrigger('my_trigger');

删除触发器

您可以使用 dropTriggerdropTriggerIfExists 方法删除现有的触发器

use Esign\DatabaseTrigger\Facades\Schema;

Schema::dropTrigger('my_trigger');

Schema::dropTriggerIfExists('my_trigger');

生成迁移

您可以使用 make:trigger artisan 命令快速生成触发器迁移

php artisan make:trigger

这将发布一个包含以下内容的迁移

use Esign\DatabaseTrigger\DatabaseTrigger;
use Esign\DatabaseTrigger\Enums\TriggerEvent;
use Esign\DatabaseTrigger\Enums\TriggerTiming;
use Esign\DatabaseTrigger\Facades\Schema;
use Illuminate\Database\Migrations\Migration;

return new class extends Migration
{
    public function up(): void
    {
        Schema::createTrigger('before_posts_update', function (DatabaseTrigger $trigger) {
            $trigger->on('posts');
            $trigger->timing(TriggerTiming::BEFORE);
            $trigger->event(TriggerEvent::UPDATE);
            $trigger->statement('');
        });
    }

    public function down(): void
    {
        Schema::dropTriggerIfExists('before_posts_update');
    }
};

触发器的名称将自动基于提供的输入创建。如果您想使用不同的触发器名称,可以将它作为第一个参数传递

php artisan make:trigger my_trigger

显示现有触发器

要显示现有触发器的列表,您可以使用 trigger:list 命令

php artisan trigger:list

php artisan trigger:list <connection>

测试

composer test

许可协议

MIT许可协议(MIT)。有关更多信息,请参阅许可文件