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

Migrations Laravel Package

laravel-doctrine/migrations

Laravel Doctrine Migrations integrates Doctrine's migration library with Laravel, providing a service provider, publishable configuration, and Artisan commands to run, roll back, and inspect database migrations in Laravel Doctrine applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What the release actually is

3.4.4 is a compatibility patch, not a feature release. Two changes: a Laravel v13 compatibility PR and a CI matrix addition covering Laravel 13. Practically this means a widened illuminate/* / laravel/framework constraint plus test coverage proving the existing code paths still pass on the new major. No new commands, no config surface changes, no deprecations, no documented breaking changes. The 3.4.3 → 3.4.4 delta is patch-level and safe to absorb on a normal dependency-refresh cadence.

Architecture fit

laravel-doctrine/migrations is a thin adapter, not a framework. It registers the Doctrine Migrations console commands into Laravel's Artisan kernel, publishes a config file, and bridges Laravel's database connection config into a Doctrine DBAL connection so the migrator operates on the same database your app already talks to. It does not own your schema model — doctrine/migrations does that, and the ORM metadata (laravel-doctrine/orm) supplies the diff source.

That has a clear architectural consequence for a TPM: this package is only a fit if Doctrine is already the persistence layer. It is a bridge dependency, and its blast radius is your deployment pipeline, not your runtime request path. If a team is on Eloquent, adopting this package means adopting Doctrine ORM, DBAL, and the Unit of Work mental model — a platform decision, not a package decision.

Integration feasibility

Straightforward mechanically: Composer install, package auto-discovery, publish config, point it at an existing DB connection, run doctrine:migrations:status. Most teams are productive in under a day. The friction is not installation, it is the schema-diff workflow: diff derives migrations from ORM mapping metadata, so mapping accuracy and metadata cache state directly determine whether generated migrations are correct or quietly destructive.

Technical risk

  • Dual migration systems. Running Laravel's native migrations and Doctrine migrations against the same schema is the single most common failure mode. Pick one owner for the migrations table and one for DDL.
  • Transitive breakage, not direct breakage. This package's patch releases are low risk; doctrine/orm and doctrine/dbal minor releases are where the real BC surface lives. Our risk register should track the transitive graph, not the wrapper.
  • Implicit-commit DDL. MySQL/Oracle DDL is non-transactional; a failed migration leaves a partially applied schema. Rollback is not a safety net for DDL on those engines.
  • Maintainer concentration. Small contributor base and an event-driven release cadence (releases cluster around Laravel majors). Bus factor is genuinely low for a package sitting in the deploy path.

Key questions for the team

  1. Is Doctrine ORM already the persistence layer, or is this being evaluated as a standalone migration tool?
  2. Is Laravel 13 on the 12–18 month roadmap? If we are on 11 or 12, 3.4.4 is a no-op for us and we can defer.
  3. Who owns the DBAL/ORM version-bump decision, and is it gated in CI?
  4. Do we have a diff-in-CI check that fails on unexpected destructive operations?
  5. What is our concurrency story for migrations across multiple app instances during deploy?

Integration Approach

Stack fit

Good fit: Laravel applications using Doctrine ORM, teams with Symfony/Doctrine heritage, domains that benefit from explicit mapping, DQL, custom repositories, or value-object-heavy models. Poor fit: Eloquent-native codebases, teams without Doctrine experience, or shops that want migrations to stay inside Laravel's own tooling. There is no partial adoption — you either run Doctrine as the schema authority or you do not use this package.

Migration path (if moving off Laravel migrations)

Treat it as a one-time baseline, not a gradual conversion:

  1. Freeze native migrations; tag the last one.
  2. Point the Doctrine connection at the existing database.
  3. Run doctrine:migrations:diff against current schema, prune the generated file to an empty/idempotent baseline, and migrations:version --add --all to mark history as applied.
  4. Disable/retire the native migrator in the deploy pipeline in the same change.
  5. All subsequent DDL flows through Doctrine only.

The sequencing matters — a window where both migrators can run is the highest-risk state in the whole programme.

Compatibility

3.4.4 broadens the supported Laravel range to include 13 and asserts it via CI. Verify our PHP floor and doctrine/dbal constraint against the package's composer.json before merging; widening Laravel support often requires a DBAL floor too. Worth a lockfile diff review, not just a version bump.

Sequencing

  1. Pin 3.4.4 in a branch, update lockfile, review the transitive delta.
  2. Run the full migration suite against a production-shaped database clone (not an empty schema).
  3. Exercise status, migrate, rollback, and diff explicitly — diff is the command most likely to regress silently.
  4. Land behind normal deploy, then treat Laravel 13 readiness as an unblocked dependency for the framework upgrade epic.

Leverage from a TPM standpoint

The useful signal in this release is scheduling, not capability: it tells us the package is tracking Laravel's release train and that Laravel 13 will not be blocked by our migration tooling. Record it as a resolved dependency in the Laravel 13 upgrade plan and move on.

Operational Impact

Maintenance

Low ongoing effort — the package is small and changes rarely, and this release requires no code changes on our side. The maintenance burden lives in the Doctrine stack underneath: ORM and DBAL upgrades, mapping drift, and metadata cache behaviour. Budget for those, not for this package.

Support

Community-supported, small maintainer group, GitHub-issues based. No commercial SLA. For a component in the deploy path, that is acceptable only if we have internal Doctrine competence — otherwise we are one maintainer-availability event away from a stalled release pipeline. Recommend designating one named internal owner.

Scaling

Migration execution is a serialized, single-writer operation guarded by the Doctrine migration table. That scales fine to large schemas and large fleets, provided the deploy pipeline runs migrations exactly once (a single job or leader-elected step), not per pod. Multi-instance rolling deploys are the scaling pressure point, not data volume. Long-running DDL on large tables is the other — plan lock windows and use online-DDL tooling (e.g. pt-online-schema-change/gh-ost) where table size warrants it.

Failure modes to instrument

  • Partially applied migration on non-transactional DDL — alert on non-zero exit and halt the rollout.
  • diff generating destructive drops from a stale or incorrect ORM mapping — gate with a required-review rule and a CI diff check.
  • Metadata cache staleness causing commands to see an outdated schema — clear cache in the deploy step.
  • Connection mismatch (package pointed at a different connection than the app) — assert at startup that both resolve to the same database.
  • Native and Doctrine migrators both active — fail the pipeline if the Laravel migrations table is touched.

Ramp-up

The package itself is a half-day to learn. The real ramp is Doctrine: EntityManager, mapping strategies, Unit of Work, DQL, and migration diffing. For an Eloquent-experienced team, estimate 2–3 weeks to genuine fluency for two engineers, plus a review gate on all generated migrations for the first quarter. If the team does not already have that depth, the honest recommendation is to stay on Laravel's native migrator — 3.4.4 is not a reason to change persistence strategy, merely confirmation that the current one remains viable.

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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels