esign / laravel-database-trigger
轻松在您的Laravel应用程序中创建数据库触发器
1.4.0
2024-03-12 22:52 UTC
Requires
- php: ^8.1
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.5
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.0|^10.0
README
此软件包提供了一种在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');
删除触发器
您可以使用 dropTrigger
或 dropTriggerIfExists
方法删除现有的触发器
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)。有关更多信息,请参阅许可文件。