ntimyeboah / laravel-database-trigger
A package to add database trigger to laravel migrations
Installs: 33 880
Dependents: 0
Suggesters: 0
Security: 0
Stars: 20
Watchers: 3
Forks: 5
Open Issues: 3
Requires
- php: ^7.3|^8.0
- laravel/framework: ^8.75
Requires (Dev)
- mockery/mockery: ^1.4.4
- phpunit/phpunit: ^9.5.10
README
Laravel Database Trigger provides a way to add database trigger to laravel migrations just like you would with database table. A trigger is a named database object that is associated with a table, and that activates when a particular event occurs for the table. Read more about triggers here.
Installation
Laravel Database Trigger requires at least PHP 7.3. This particular version supports Laravel v8.*. Check the table below for versions support.
The package currently supports MySQL only.
To get the latest version, simply require the package using Composer:
$ composer require ntimyeboah/laravel-database-trigger
Once installed, if you are not using automatic package discovery, then you need to register the NtimYeboah\LaravelDatabaseTrigger\TriggerServiceProvider
service provider in your config/app.php
.
Usage
Create a trigger migration file using the make:trigger
artisan command.
The command requires the name of the trigger, name of the event object table, action timing and the event that activates the trigger.
$ php artisan make:trigger after_users_update
Event object table
The event object table is the name of the table the trigger is associated with.
Action timing
The activation time for the trigger. Possible values are after
and before
.
after
- Process action after the change is made on the event object table.
before
- Process action prior to the change is made on the event object table.
Event
The event to activate trigger. A trigger event can be insert
, update
and delete
.
insert
- Activate trigger when an insert operation is performed on the event object table.
update
- Activate trigger when an update operation is performed on the event object table.
delete
- Activate trigger when a delete operation is performed on the event object table.
The following trigger migration file will be generated for a trigger that uses after_users_update
as a name, users
as event object table name, after
as action timing and update
as event.
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'); } }
Return the trigger statement from the closure of the statement
method.
The following is an example trigger migration to insert into the users_audit
table after updating a user row.
... /** * 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(); } ...
Testing
Run the tests with:
$ composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover a security vulnerability within this package, please send an e-mail to Ntim Yeboah at ntimobedyeboah@gmail.com. All security vulnerabilities will be promptly addressed.
License
Laravel Database Trigger is licensed under The MIT License (MIT).