This content originally appeared on DEV Community and was authored by Abiruzzaman Molla
Hey LinkedIn fam, I’m excited to share my latest open-source project for all you Laravel enthusiasts out there – https://packagist.org/packages/azmolla/transaction-middleware ! 🚀
This package wraps every DELETE request in a database transaction. In other words, if something goes sideways during a DELETE operation, your changes automatically roll back, keeping your data safe and sound. It’s like having an insurance policy for your database operations!
Key Highlights:
- Smart Transaction Handling: Only DELETE requests get wrapped in a transaction, and there is no extra overhead on other requests.
- Flexible Configuration: Choose to auto-apply the middleware globally, or only to the web or API groups via an easy-to-adjust config file.
- Manual Control: Prefer granular control? Use the transaction alias and attach the middleware exactly where you need it.
- Seamless Integration: Thanks to Laravel’s auto-discovery, setup is a breeze. Check it out on Packagist 👉 https://packagist.org/packages/azmolla/transaction-middleware
I’d love to hear your thoughts and feedback—let’s keep pushing the boundaries of robust, scalable web development together!
Transaction Middleware for Laravel Description
Transaction Middleware for Laravel is a simple package that provides a middleware to wrap DELETE requests in a database transaction. This means that if an error occurs during a DELETE request, any database changes will be rolled back automatically, ensuring data integrity.
Version: 1.0.6
Features
DB Transaction on DELETE Requests:
Wraps only DELETE method requests in a database transaction. If an exception is thrown during request processing, the transaction is rolled back.-
Flexible Auto-application:
Control how the middleware is applied via configuration:-
auto_apply_global
— Apply automatically to global middleware. -
auto_apply_web
— Apply automatically to the web group only. -
auto_apply_api
— Apply automatically to the api group only.
-
Manual Attachment:
Even if you choose not to auto-apply, the middleware is available via its alias (transaction
) for manual attachment on routes.Laravel Auto-Discovery:
The package uses Laravel’s auto-discovery so you don’t need to manually register the service provider.
Requirements
- PHP ^8.0
- Laravel 9.x, 10.x, 11.x or 12.x (or higher)
Installation
Install via Composer:
composer require azmolla/transaction-middleware
Laravel will automatically discover the service provider. If you need to publish the configuration file, run:
php artisan vendor:publish --tag=transaction-middleware-config
This will copy the configuration file to your Laravel application’s config
directory as transaction-middleware.php
.
Configuration
The published config file (config/transaction-middleware.php
) looks like this:
<?php
return [
'auto_apply_global' => false,
'auto_apply_web' => false,
'auto_apply_api' => false,
];
How It Works
Auto-application Mode:
If you setauto_apply_web_api
totrue
, the service provider will automatically push the middleware to both the web and api middleware groups.Selective Auto-application:
Alternatively, you can set only one of the other two options (auto_apply_web
orauto_apply_api
) totrue
to have the middleware applied only to that particular group.Manual Mode:
With all auto-apply options set tofalse
, you must manually attach the middleware to your routes using the aliastransaction
.
Usage
1. Automatic Middleware Application
After publishing the config file, edit it as needed:
- To add the middleware to both groups:
'auto_apply_global' => true,
'auto_apply_web' => false,
'auto_apply_api' => false,
- To add it only to the web group:
'auto_apply_global' => false,
'auto_apply_web' => true,
'auto_apply_api' => false,
- To add it only to the API group:
'auto_apply_global' => false,
'auto_apply_web' => false,
'auto_apply_api' => true,
In these modes, you don’t need to add the middleware manually; it will automatically be pushed into the appropriate middleware groups.
2. Manual Middleware Application
If you prefer to control where the middleware is applied, leave all auto-apply options as false
. Then, attach the middleware to your routes like so:
Route::delete('/posts/{post}', [PostController::class, 'destroy'])
->middleware('transaction');
3. Transaction Trait
The easiest will be to use the \Azmolla\TransactionMiddleware\Traits\HasTransactionCalls
trait which adds a transaction()
method.
use Azmolla\TransactionMiddleware\Traits\HasTransactionalCalls;
class MyModel
{
use HasTransactionalCalls;
}
Transaction chained Method
You can call the transaction()
without any argument and the method after will be called in a transaction.
This example will call the delete()
method in a transaction.
This is useful if you have any listeners also running database queries, like deleting child models.
The transaction will prevent you from corrupted data if any of the queries fails.
$model->transaction()->delete();
Conditional Callback
If you want you can also pass a callback to the transaction()
method you will get the calling object as first argument.
$model->transaction(function(Model $model) {
$model->update();
$model->child->update();
});
How It Works Under the Hood
Middleware Logic:
The middleware checks if the request is a DELETE method. If so, it starts a DB transaction usingDB::beginTransaction()
. The request is then passed along the middleware pipeline. If the request processing completes without error,DB::commit()
is called. In case of an exception,DB::rollBack()
is executed, and the exception is rethrown.Service Provider:
TheTransactionMiddlewareServiceProvider
merges your package’s configuration with the application config, publishes the config file for customization, and conditionally pushes the middleware into the appropriate groups based on the configuration values.Laravel Auto-discovery:
Thanks to theextra
block in the composer.json, Laravel auto-discovers and registers the service provider, so there’s no manual configuration required inconfig/app.php
.Trait Usage:
You can use the\Azmolla\TransactionMiddleware\Traits\HasTransactionCalls
trait to add atransaction()
method to your models.
License
This package is open-sourced software licensed under the MIT license.
Changelog
Version 1.0.6
- Support for Laravel ^12
Version 1.0.5
- Add a trait and class to call methods in a database transaction.
Version 1.0.4
- update 'auto_apply_web_api' to 'auto_apply_global'
Version 1.0.3
- update readme.md
- update composer.json
Version 1.0.2
- update readme.md
Version 1.0.1
- updated composer.json
Version 1.0.0
- Initial release of Transaction Middleware for Laravel.
- Provides DB transaction wrapping for DELETE requests.
- Configurable auto-application to web and/or API middleware groups.
Happy coding and thanks for using Transaction Middleware for Laravel! If you have questions or run into issues, feel free to open an issue on GitHub.
Laravel #PHP #OpenSource #WebDevelopment #Innovation
This content originally appeared on DEV Community and was authored by Abiruzzaman Molla

Abiruzzaman Molla | Sciencx (2025-03-02T04:35:31+00:00) Laravel Delete Method Auto DB::Transaction Middleware. Retrieved from https://www.scien.cx/2025/03/02/laravel-delete-method-auto-dbtransaction-middleware/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.