Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Doctrine Migrations Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • Fork drift. 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.
  • Zero adoption signal. 1 star, 0 dependents. There is no community to hit bugs first, no issue backlog to learn from, and no Stack Overflow surface area. Every defect is yours to find.
  • Attribution ambiguity. The package name is close to the canonical 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.
  • Supply chain. 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.

  1. Which Symfony and Doctrine versions does this fork's composer.json actually constrain? Is it pinned to a branch that upstream has abandoned?
  2. What prompted the fork — a specific bug, a PHP version, a Symfony major bump? If you can reproduce the need, you may be able to use upstream with a version constraint instead.
  3. Is the target application actually Symfony? If yes, why not upstream? If no (Laravel), this package is the wrong tool entirely.
  4. Who owns patching this fork if upstream releases a migration-safety fix (e.g., a diff-generation or locking bug)?

Integration Approach

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:

  • Add doctrine/dbal if you need schema introspection for ->change() operations on existing tables.
  • Add 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).
  • Wrap it in a small 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.

  • Confirm symfony/framework-bundle, doctrine/orm, and doctrine/dbal version intersections.
  • Confirm PHP version floor against your runtime.
  • Confirm the migration config format (doctrine_migrations.yaml vs the older config.yml tree) — the fork may predate the config restructure.
  • Check whether the fork retains the doctrine_migrations service aliases your application code may reference.

Sequencing.

  1. Inventory the current Symfony/Doctrine/PHP versions and the actual reason the fork is present (composer why, git blame on the composer.json entry).
  2. Prototype the upstream package in a branch; run doctrine:migrations:diff and migrations:migrate --dry-run against a scratch database to confirm behavior parity.
  3. For Laravel targets, prototype the doctrine/migrations + service-provider approach instead and compare generated SQL to what the team expects.
  4. Only after 1–3 fail, retain the fork — and if so, vendor it (Composer repositories entry pointing at a maintained mirror) so build reproducibility does not depend on a 1-star GitHub repo staying online.

Operational Impact

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 run as a single serialized process; concurrent deploys need an external lock (advisory DB lock, deploy gate) or you will double-apply.
  • migrations:diff against a large entity graph is CPU- and memory-bound and does not parallelize.
  • Long-running migrations hold DDL locks; on large tables this becomes a deploy-window problem, not a framework problem.

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.

  • Boot failure in a non-Symfony container (Laravel) — silent in dev if the bundle is never loaded, loud and confusing if autoloading pulls in a Symfony service that expects a kernel.
  • Composer resolution deadlock when a transitive dependency bumps Symfony past the fork's constraint.
  • Divergence in generated migration SQL if the fork pins an older doctrine/dbal schema comparator — the same entity diff can produce different DDL between environments running different versions.
  • Abandonment: the fork stops receiving even security-adjacent updates because it was never wired to upstream's release process.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource