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

Laravel Data Migrations Laravel Package

lacodix/laravel-data-migrations

Laravel Data Migrations adds versioned data migrations to Laravel apps, letting you ship seed and data changes alongside schema migrations with tracking and repeatable, idempotent execution.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit Data migrations are a separate concern from schema migrations: they version and track one-off data operations (backfills, column transforms, reference-data seeding) using the same ordered, recorded execution model Laravel developers already understand. v3.0.0 does not change that architecture — it changes package identity (Composer name, PHP namespace) and the supported platform matrix. Functionally this is a rename-plus-rebase release, so architectural fit with a standard Laravel codebase is unchanged and low-friction: one dependency, convention-based migration files, a history table.

Integration feasibility For greenfield adoption, feasibility is high: composer require lacodix/laravel-data-migrations:^3.0, publish/verify config, write data migration files, run the package's commands. For existing users of jlorente/laravel-data-migrations 2.x, the work is mechanical but mandatory and non-trivial: every use Jlorente\DataMigrations\... import, plus any manual service-provider registration or class references in config, must be rewritten. There are no namespace aliases and no Composer replace directive, so the upgrade is an explicit cut-over rather than a transparent swap.

Technical risk

  • Identity cut-over risk (medium, contained). The upgrade window is the risky period: if the old and new packages coexist in a lockfile, you get duplicate/ambiguous class definitions or a Composer conflict. The release notes explicitly prohibit installing both, which means any transitive dependency still pinned to jlorente/* blocks the upgrade until it moves.
  • Data-replay risk (low if configured, high if not). Correctly configured installs keep migration files, directories, history table and history records, and need no data rewrite. The stated caveat — installations with no explicit configuration should verify the existing history-table location — is the one place where a wrong table name causes the package to treat already-applied data migrations as pending. For destructive or non-idempotent data operations, that is a production-data incident, not a deploy hiccup.
  • Governance/continuity risk (medium). This is a fork under new stewardship with a single contributor on the inaugural release, and the upstream project is effectively retired for our purposes. Bus factor and long-term release cadence are unproven. Note also the explicit statement that Laravel 11 compatibility does not imply ongoing security support — Laravel 11 shops get functionality without a patch guarantee.
  • Platform-drop risk (low, but budget it). Laravel ≤10 and PHP <8.2 are unsupported. Any service below that line cannot take this release and will remain on an unmaintained upstream — an explicit fork-in-the-road decision per application.

Key questions

  1. Do we currently run jlorente/laravel-data-migrations anywhere? (composer why jlorente/laravel-data-migrations, lockfile and vendor/ audit across all repos.)
  2. Did those installs publish an explicit config, and where does the history table actually live in each environment?
  3. Are any third-party packages depending on the upstream package name, which would block coexistence-free adoption?
  4. What is our Laravel/PHP version distribution, and which services fall below 8.2 / Laravel 11?
  5. What commitment does Lacodix make on release cadence, security patches and Laravel 11 backports? Is there a documented support policy beyond the version table?
  6. Are our existing data migrations idempotent? If not, table-verification must be a hard gate before any post-upgrade run.

Integration Approach

Stack fit Clean fit for Laravel 11–12 on PHP 8.2+ and Laravel 13 on PHP 8.3+. Services on Laravel ≤10 or PHP <8.2 are out of scope for this release and need a separate modernization decision; they should not be force-upgraded as part of this change.

Migration path (per application)

  1. Inventory: confirm the upstream package is present, capture the current version, and record the configured history table name from config and from the database.
  2. Remove jlorente/laravel-data-migrations; add lacodix/laravel-data-migrations:^3.0. Verify the lockfile contains exactly one of the two.
  3. Codemod the namespace: Jlorente\DataMigrations → Lacodix\LaravelDataMigrations across app/, config/, database/, and any manual provider registration.
  4. Refresh build artifacts: composer dump-autoload, php artisan config:clear, php artisan clear-compiled, php artisan package:discover. In containerized deploys, rebuild images rather than patching caches in place.
  5. Verify command surface: the package's data-migration commands are present and migrate:install is still Laravel's native command (the bundled fix for Laravel 13.24+ specifically prevents the package from shadowing it).
  6. Prove no replay: run the package's status/list command against a staging copy and confirm previously applied data migrations are reported as applied.

Compatibility No legacy aliases and no Composer replacement — the cut-over is all-or-nothing per application. Migration files, directories, history table and history records carry over unchanged, so there is no data rewrite step and no need to re-run historical migrations, provided step 6 passes.

Sequencing

  • Treat this as a standalone dependency/governance change, not bundled with feature work, so any regression has a clean blame surface.
  • Pilot on one low-traffic service with an explicit config and a small number of data migrations; validate the status output, then roll to the rest.
  • Run each application's upgrade as: PR with the rename → CI green → staging against a production-shaped DB copy → production deploy in a low-risk window.
  • Rollback is a revert of the Composer and namespace change plus a cache rebuild; because no data is rewritten, rollback is safe up to the point where new data migrations are authored under the new namespace.
  • Update internal docs, runbooks and scaffolding templates that reference the old package name in the same change, or the old name will leak back in.

Operational Impact

Maintenance Ownership shifts to Lacodix. The maintenance question is no longer "is the upstream abandoned?" but "is the fork well-tended?" — track release cadence, issue responsiveness, and whether Laravel 11 receives patches. Assign a named internal owner for the dependency and a recurring review (e.g. quarterly) of the package's activity, since the fork has a single contributing author on this release.

Support Community/GitHub-issue support with no vendor SLA. Internal escalation therefore depends on our own ability to read and patch the package — worth a quick sanity check that the codebase is small enough for one of our engineers to fork-and-fix if a breaking Laravel change lands before the maintainer responds.

Scaling The operational cost is in the data migrations themselves, not the package. Large backfills run inside the deploy pipeline and can lengthen deploys, hold locks, or time out. Standard guidance applies: batch the work, make each migration idempotent and re-runnable, and prefer off-peak execution for anything touching high-volume tables. The renaming does not change this profile — but a mistaken history-table lookup that triggers re-execution would multiply it.

Failure modes

  • Both packages installed — Composer conflict or duplicate class definitions; deploy fails loudly or behaves ambiguously. Prevention: lockfile assertion in CI that exactly one of the two package names is present.
  • Stale autoload/config/provider caches — classes resolve to the old namespace in one environment only, producing "class not found" or silently unregistered commands. Prevention: cache-clearing baked into the deploy step, immutable image rebuilds.
  • Wrong history table (highest severity) — the package sees zero applied data migrations and re-runs all of them, causing duplicate inserts, double-applied transforms, or corrupted state. Prevention: mandatory table-verification gate before the first post-upgrade run, and a DB backup/snapshot as a pre-condition.
  • migrate:install shadowing — fixed in this release for Laravel 13.24+, but older pinned versions of either package can still shadow Laravel's native command and leave the migrations table uncreated. Prevention: post-upgrade verification of php artisan list.
  • Fork discontinuity — the maintainer stops releasing while Laravel moves on, leaving us stranded again. Prevention: dependency-review cadence and a documented internal fork contingency.

Ramp-up Low for developers: the mental model is identical to Laravel migrations, and only the import path and command names change. The real ramp-up cost is organizational — updating internal docs, templates, code-review checklists and any onboarding material that references the old namespace, and briefing the team that "add the data-migrations package" now means the Lacodix one. Estimate per application: under a day for the mechanical rename and validation in a small codebase, plus one staging verification cycle; the schedule driver is the audit and pilot, not the code change.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin