This is where your description should go. Limit it to a paragraph or two. Consider adding a small example.
* Laravel 9+
* php 8.1+
You can install the package via composer:
composer require dinhdjj/laravel-auto-db-transaction-middleware
Firstly you should register the middleware to group or you can use middleware in specific routes.
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
...,
\Dinhdjj\AutoDBTransaction\AutoDBTransactionMiddleware::class,
],
'api' => [
...,
\Dinhdjj\AutoDBTransaction\AutoDBTransactionMiddleware::class,
]
Above is all thing you need to do.
Below I will show you how it auto activate db-transaction on each request.
- It only activate
beginTransaction
on methodPOST
,PUT
,PATCH
,DELETE
...(notGET
) methods. - In all cases it will auto
commit
and onlyrollback
when it encounter an unhandled exception. - It will also throw exceptions in some cases.
- When you miss
commit
orrollback
on your ownbeginTransaction
. - When you use redundant
commit
orrollback
db-transaction.
- When you miss
When an exception is thrown, in most cases behaver of this package will rollBack
the db-transaction, but if you not use default logging exception handler of laravel
the package will evaluate that you handled the exception and it will continue commit
db-transaction.
Below is the example of cases not use default logging exception handler of laravel
//App\Exceptions\Handler
$this->reportable(function (InvalidOrderException $e) {
//
})->stop();
$this->reportable(function (InvalidOrderException $e) {
return false;
});
or
namespace App\Exceptions;
use Exception;
class InvalidOrderException extends Exception
{
/**
* Report the exception.
*
* @return bool|null
*/
public function report()
{
return true;
// or
return null;
}
}
If you not use default logging exception handler of laravel
and you want to rollBack
the db-transaction, you can use this:
// 1. use your own db-transaction
DB::beginTransaction();
// your code
DB::rollBack();
// 2. You helper method to rollback the package's db-transaction
$this->reportable(function (InvalidOrderException $e) {
\Dinhdjj\AutoDBTransaction\Facades::rollBack();
})->stop();
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.