cleverage/doctrine-process-bundle
Integrates Doctrine with the CleverAge ProcessBundle, letting you use Doctrine entities and repositories within your process workflows. Part of the CleverAge ProcessBundle project for Symfony.
entity_manager option is now actually honored across tasks (multi-EM apps behave predictably), DoctrineReaderTask hydrates entities one at a time (memory profile changes from O(result set) to O(1) — this is the difference between "safe for large tables" and "safe for small ones"), readers re-execute queries per input (no silently skipped records in multi-input jobs), DatabaseReaderTask no longer demands table when sql is supplied (fewer misconfigured jobs), and null-input cases now throw explicit errors instead of TypeError/misleading messages. Each of these is a data-integrity or operability issue, which is exactly what a PM needs to weigh when committing to a roadmap.next()-before-execution, and bundle/DI wiring. For a PM, that converts "vendor dependency" into "auditable dependency."Consider adopting when:
cleverage/process-bundle or are evaluating it (this bundle is meaningless without the parent — evaluate the parent first).Look elsewhere when:
Bus::chain/Pipeline, Horizon, or a symfony/process wrapper covers most of the same ground without a second ORM. If you truly need durable, DB-persisted state machines, evaluate Laravel-native workflow packages or keep orchestration in your own schema.Executives: "This is a small, MIT-licensed PHP library that lets our process and batch workflows keep their state in our existing database — so if a job fails halfway, it restarts where it stopped instead of from zero, and every step is auditable in the same transaction as the business data. The current release is a quality release: it fixes record-skipping in readers, memory blowups on large queries, and inconsistent database-connection handling, and it adds test coverage. Two caveats to fund around: it is built for Symfony, not Laravel, so adoption in a Laravel codebase is a platform decision rather than a drop-in; and it has essentially zero external users, so we should assume we are the first serious adopter. Recommendation: pilot it in one internal, non-revenue-critical pipeline before committing roadmap capacity."
Engineering: "This is the Doctrine integration layer for CleverAge/ProcessBundle — it gives you process tasks that read from and write to Doctrine entities, plus DBAL-backed SQL readers/writers, so process state and step logic share one ORM and one transaction boundary. If you're already on ProcessBundle, v3.2 is a must-take: entity_manager is now respected by every task instead of silently ignored (a real multi-EM correctness bug), DoctrineReaderTask hydrates one entity per iteration instead of materializing the whole result set, readers re-execute per input so no input gets skipped after a full iteration, table is only required when sql isn't set, and null inputs now fail with explicit exceptions. It also adds tests across database tasks, query-builder options, reader pre-execution, and DI wiring, and pins doctrine/dbal to ^2.9 || ^3.0 while allowing doctrine/orm 3.x. Costs to weigh: it is Symfony-kernel-coupled (services are explicit, prefixed cleverage_doctrine_process, no autowiring since v2.0), it is on a major-version cadence tied to ProcessBundle (v3 requires process-bundle ^5.0, PHP 8.5, Symfony 8), and the global_flush writer option and PurgeDoctrineCacheTask no longer exist. In a Laravel context, treat it as a deliberate Doctrine domain island with its own kernel wiring — price that, including the migration effort, before agreeing to it."
How can I help you explore Laravel packages today?