Generate migration file for database trigger
MIT License
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.
Laravel Database Trigger requires at least PHP 7.3. This particular version supports Laravel v8.*. Check the table below for versions support.
Package version | Laravel version | PHP version |
---|---|---|
1 | 5.5, 5.6, 5.7 | >= 7.1 |
2.* | 5.8 | >= 7.1.3 |
3.* | 6.* | >= 7.2.5 or >= 8.0 |
4.* | 7.* | >= 7.2.5 or >= 8.0 |
5.* | 8.* | >= 7.3 or >= 8.0 |
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
.
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
The event object table is the name of the table the trigger is associated with.
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.
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();
}
...
Run the tests with:
$ composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover a security vulnerability within this package, please send an e-mail to Ntim Yeboah at [email protected]. All security vulnerabilities will be promptly addressed.
Laravel Database Trigger is licensed under The MIT License (MIT).