webignition/doctrine-migrations-bundle
Symfony bundle integrating Doctrine Migrations with configuration and console commands for generating and running database migrations in Symfony applications. A lightweight fork of the official DoctrineMigrationsBundle.
Architecture fit. This is a Symfony bundle, not a Laravel package. It is a namespaced fork of doctrine/doctrine-migrations-bundle, meaning it depends on the Symfony Kernel, DependencyInjection, and Config components to auto-register and wire Doctrine's migration tooling into the framework container. Laravel has no bundle concept: it boots packages via service providers and config/*.php. Dropping this bundle into a Laravel application produces a fit problem, not a configuration problem — there is no Symfony AppKernel to register it with and no DoctrineMigrationsExtension to consume its config tree.
Integration feasibility. Low for a Laravel codebase. In Laravel, Doctrine migrations are conventionally handled either by (a) using Eloquent's php artisan migrate (native, no Doctrine needed), or (b) pulling doctrine/migrations directly and writing a small Laravel service provider/console command to invoke migrations:migrate / migrations:diff. Option (b) gets you the same capability without the Symfony bundle layer. This package adds a Symfony-shaped abstraction that your framework will not load.
Technical risk. Moderate-to-high, for reasons that are organizational rather than technical:
webignition forks are typically created to pin an older Symfony minor that upstream dropped. The fork therefore does not track upstream security or bug fixes, and its Symfony/Doctrine version constraints will diverge further over time.doctrine/doctrine-migrations-bundle. Composer will resolve whichever you require, but teammates and CI audits can easily mistake this fork for the real thing. Verify the vendor in composer.lock, not the package name.webignition is a legitimate, long-standing publisher (Simon Mönch / webignition), so this is not a typosquat — but a 1-star fork with no dependents is an unmonitored artifact.Key questions to settle before committing.
composer.json actually constrain? Is it pinned to a branch that upstream has abandoned?Stack fit. Poor for Laravel. Acceptable only for a Symfony application pinned to an older framework version where upstream doctrine/doctrine-migrations-bundle no longer supports the pinned Symfony constraint. In that narrow case, the fork is doing exactly the job it was created for.
Recommended migration path (Laravel target). Do not install this bundle. Instead:
doctrine/dbal if you need schema introspection for ->change() operations on existing tables.doctrine/migrations directly if you genuinely need Doctrine-style versioned migrations (common when sharing a schema with a Doctrine-using service, or when you need migrations:diff against Doctrine entities).DoctrineMigrationsServiceProvider plus a console command, or use an existing Laravel-side wrapper. This is roughly 100–150 lines and removes the Symfony dependency entirely.Migration path (Symfony target). If you are on Symfony and currently using this fork, first attempt to move to doctrine/doctrine-migrations-bundle at the nearest compatible constraint. Run composer why webignition/doctrine-migrations-bundle to see what is holding the fork in place; it is usually a transitive constraint from another pinned package. If upstream cannot satisfy the constraint, keep the fork but document why, and add a Renovate/Dependabot rule that flags when upstream becomes compatible again.
Compatibility checks.
symfony/framework-bundle, doctrine/orm, and doctrine/dbal version intersections.doctrine_migrations.yaml vs the older config.yml tree) — the fork may predate the config restructure.doctrine_migrations service aliases your application code may reference.Sequencing.
composer why, git blame on the composer.json entry).doctrine:migrations:diff and migrations:migrate --dry-run against a scratch database to confirm behavior parity.doctrine/migrations + service-provider approach instead and compare generated SQL to what the team expects.repositories entry pointing at a maintained mirror) so build reproducibility does not depend on a 1-star GitHub repo staying online.Maintenance. This is the dominant cost. A fork carries the maintenance obligation of the upstream project plus the delta the fork introduced. With one star and no dependents, there is no signal that anyone is exercising that obligation. Budget for the possibility that you are the only party who will ever patch this code.
Support. Effectively none. No issue triage community, no maintained changelog beyond what upstream publishes, no guarantee that the fork rebases. Documentation is whatever upstream's docs say, filtered through a version skew you will have to reason about yourself.
Scaling. The bundle itself is thin orchestration and not a scaling concern. The real limits are in Doctrine Migrations' execution model:
migrations:diff against a large entity graph is CPU- and memory-bound and does not parallelize.None of these are fixed or worsened by the fork — but they are the operational realities you will actually be managing.
Failure modes to plan for.
doctrine/dbal schema comparator — the same entity diff can produce different DDL between environments running different versions.Ramp-up. Low for anyone comfortable with Symfony bundles and Doctrine — the API surface is small and upstream docs transfer. The real ramp-up cost is investigatory: understanding why the fork exists in your dependency graph is typically a half-day of composer why archaeology plus a conversation with whoever added it. That investigation is worth doing regardless of the decision, because it usually reveals a stale pin elsewhere that is the actual root cause.
How can I help you explore Laravel packages today?