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 8.2. This particular version supports Laravel v11.*. 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 |
6.* | 9.* | >=8.0 |
7.* | 10.* | >=8.1 |
8.* | 11.* , 12.* | >=8.2 |
This 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;
return new class 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('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
I am currently seeking new employment opportunities and would appreciate it if you'd keep me in mind for roles such as Backend Developer. Kindly contact me at: [email protected]
This is a link to my CV: Ntim Yeboah CV
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).