aeatech/transaction-manager-common-transactions
Shared transaction definitions and utilities for AeaTech Transaction Manager. Centralizes common transaction types, payload structures, and helper classes used across services/packages to keep implementations consistent and reusable.
begin, commit, rollback hooks).SAVEPOINT, isolation levels) may not be uniformly supported. Custom adapters might be needed.DB::transaction() suffice, or are advanced features (e.g., distributed ACID) needed?database/transactions package) or libraries like Doctrine DBAL achieve the same goals?DB facade, service container, and event system. Can replace or extend native transaction handlers.DB::transaction() for common use cases (e.g., CRUD operations, batch inserts).DB::transaction() with the package’s TransactionManager where dialect-agnostic behavior is required.pgsql, mysql, sqlite3). May need custom adapters for less common databases.queue:work transactions).TransactionCommitted).TransactionManager to Laravel’s service container in a provider.$this->app->bind(TransactionManager::class, function ($app) {
return new TransactionManager(new PdoConnection($app['db']));
});
facade(TransactionManager::class, TransactionManagerFacade::class);
RefreshDatabase trait for integration tests with multiple databases.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Database driver incompatibility | Transactions fail silently | Test all target databases early. |
| Package bug (e.g., memory leak) | App crashes or memory exhaustion | Fork and patch if critical. |
| Network partition (distributed TX) | Inconsistent data | Use compensating transactions or sagas. |
| Laravel cache/queue issues | Transaction metadata lost | Ensure atomicity with DB::transaction(). |
| PHP version deprecation | Package breaks on upgrade | Pin PHP version in composer.json. |
DB::transaction() will adapt quickly.TransactionManager::run(fn() => Model::create(...))).How can I help you explore Laravel packages today?