dinhdjj / laravel-auto-db-transaction-middleware
该包已被弃用且不再维护。未建议替代包。
一个laravel中间件,自动在每个请求上激活数据库事务
v1.0.1
2022-05-11 01:01 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^9.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2023-11-09 13:18:45 UTC
README
这里应该放你的描述。限制在一两段话之内。考虑添加一个小示例。
要求
* Laravel 9+
* php 8.1+
安装
你可以通过composer安装此包
composer require dinhdjj/laravel-auto-db-transaction-middleware
使用
首先,你应该将中间件注册到组中,或者你可以将中间件用于特定的路由。
/** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ ..., \Dinhdjj\AutoDBTransaction\AutoDBTransactionMiddleware::class, ], 'api' => [ ..., \Dinhdjj\AutoDBTransaction\AutoDBTransactionMiddleware::class, ]
以上就是你需要做的所有事情。
工作原理
以下我将向您展示它如何自动在每个请求上激活数据库事务。
- 它仅在
POST
、PUT
、PATCH
、DELETE
...(不是GET
)方法上激活beginTransaction
。 - 在所有情况下,它将自动
commit
,只有在遇到未处理的异常时才会rollback
。 - 它也会在某些情况下抛出异常。
- 当你忘记在你的
beginTransaction
上执行commit
或rollback
时。 - 当你使用冗余的
commit
或rollback
数据库事务时。
- 当你忘记在你的
异常处理程序
当抛出异常时,在大多数情况下,此包的行为将是rollBack
数据库事务,但如果你没有使用laravel的默认日志异常处理程序
,则此包将评估你已处理异常,并且它将继续commit
数据库事务。
以下是不使用laravel的默认日志异常处理程序
的案例示例
//App\Exceptions\Handler $this->reportable(function (InvalidOrderException $e) { // })->stop(); $this->reportable(function (InvalidOrderException $e) { return false; });
或
namespace App\Exceptions; use Exception; class InvalidOrderException extends Exception { /** * Report the exception. * * @return bool|null */ public function report() { return true; // or return null; } }
如果你没有使用laravel的默认日志异常处理程序
并且你想rollBack
数据库事务,你可以使用这个
// 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
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请审查我们的安全策略以了解如何报告安全漏洞。
致谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。