PHP code example of waska14 / laravel-with-db-transactions
1. Go to this page and download the library: Download waska14/laravel-with-db-transactions library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
waska14 / laravel-with-db-transactions example snippets
return [
/*
* Route names that will be processed without transaction by WithDBTransactions middleware
*/
'ignore_route_names' => [
// login
],
/*
* Request methods that will be processed without transaction by WithDBTransactions middleware
*/
'ignore_request_methods' => [
'get',
],
/*
* Maximum attempts for transaction by default.
* Note: You can ignore route name, than use middleware with_db_transactions:N where N is the number of attempts.
*/
'maximum_attempts' => 1,
/*
* If response's http status code is any of those, the transaction will be committed.
* Note: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
*/
'commit_http_statuses' => [
200, // OK
201, // Created
202, // Accepted
203, // Non-Authoritative Information
204, // No Content
205, // Reset Content
206, // Partial Content
207, // Multi-Status (WebDAV)
208, // Already Reported (WebDAV)
226, // IM Used
300, // Multiple Choices
301, // Moved Permanently
302, // Found (Previously "Moved temporarily")
303, // See Other (since HTTP/1.1)
304, // Not Modified (RFC 7232)
305, // Use Proxy (since HTTP/1.1)
306, // Switch Proxy
307, // Temporary Redirect (since HTTP/1.1)
308, // Permanent Redirect (RFC 7538)
],
/*
* Middleware default class.
* Anytime you can extend/override the class and change namespace of middleware_class
*/
'middleware_class' => \Waska\LaravelWithDBTransactions\Http\Middleware\WithDBTransactions::class,
/*
* Default alias for middleware
*/
'middleware_alias' => 'with_db_transactions',
/*
* List of middleware groups, where will be pushed with_db_transactions middleware by default (from ServiceProvider)
*/
'middleware_groups' => [
// 'api',
// 'web',
],
/*
* Maximum attempts for middleware_groups
* Note: if value is null, default maximum_attempts will be used.
*/
'maximum_attempts_for_groups' => null,
/*
* Before and after action events
*/
'before_begin_transaction_event' => \Waska\LaravelWithDBTransactions\Events\BeforeBeginTransactionEvent::class,
'after_begin_transaction_event' => \Waska\LaravelWithDBTransactions\Events\AfterBeginTransactionEvent::class,
'before_commit_event' => \Waska\LaravelWithDBTransactions\Events\BeforeCommitEvent::class,
'after_commit_event' => \Waska\LaravelWithDBTransactions\Events\AfterCommitEvent::class,
'before_rollback_event' => \Waska\LaravelWithDBTransactions\Events\BeforeRollbackEvent::class,
'after_rollback_event' => \Waska\LaravelWithDBTransactions\Events\AfterRollbackEvent::class,
'before_every_rollback_event' => \Waska\LaravelWithDBTransactions\Events\BeforeEveryRollbackEvent::class,
'after_every_rollback_event' => \Waska\LaravelWithDBTransactions\Events\AfterEveryRollbackEvent::class,
];
WithDBTransactions::beforeCommit(callable $closure); // Before committing database transaction
WithDBTransactions::afterCommit(callable $closure); // After committing database transaction
WithDBTransactions::beforeRollback(callable $closure); // Before last rollback
WithDBTransactions::afterRollback(callable $closure); // After last rollback
WithDBTransactions::beforeEveryRollback(callable $closure); // Before every (except last) rollback
WithDBTransactions::afterEveryRollback(callable $closure); // After every (except last) rollback
WithDBTransactions::beforeCommit(function () {
\Log::info('First log and then commit!');
});
WithDBTransactions::afterCommit(function () {
\Log::info('First commit and then log!');
});
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
use Waska\LaravelWithDBTransactions\Helpers\WithDBTransactions;
class Controller extends BaseController
{
public function create(Request $request)
{
// your stuff
WithDBTransactions::beforeRollback(function () {
\Log::info('log1 before rollback!');
});
WithDBTransactions::afterRollback(function () {
\Log::info('log1 after rollback!');
});
WithDBTransactions::afterRollback(function () {
\Log::info('log2 after rollback!');
});
// your stuff
\App\User::create($request->validated());
// Some error happened, so middleware rollbacks the transaction
throw new \Exception('Something went wrong');
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.