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 Migration Generator Laravel Package

barryvdh/laravel-migration-generator

Generate Laravel migration files from an existing database schema. This package by Barry vd. Heuvel inspects your current tables and creates matching migrations, including indexes and foreign keys, making it easy to version-control legacy or inherited databases.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Brownfield go/no-go. The package answers one question above all: can we run Laravel on the database we already have? Generating a baseline migration set converts "unknown legacy schema" from an open-ended risk into a concrete, reviewable artifact — exactly the evidence a go/no-go gate needs.
  • Re-platform vs. wrap-and-extend. The generated output doubles as a schema inventory. What the tool cannot represent (views, stored procedures, triggers, partitions, custom types, check constraints) is itself decision input: a schema that is ~90% plain tables supports wrapping and extending; one dominated by out-of-scope objects argues for re-platforming or for leaving schema ownership in the database.
  • Build vs. buy (schema tooling). Manual transcription is weeks of error-prone engineering; this is a free, small, one-shot utility. Frame it as "adopt the output, not the dependency" — spend the hour, own the artifact.
  • Roadmap sequencing and estimation. A migration baseline is the contract everything downstream builds on: environment parity, CI migrate:fresh, seeders, ORM modeling, data-migration and backfill work. Producing it early de-risks a milestone; producing it late forces rework of dependent tasks.
  • Scope negotiation on what the app does not own. The explicit list of dropped objects becomes a written product decision about which logic stays in the database and which moves into the application — a conversation worth forcing early, while it is still cheap.
  • Dev/CI parity. Enables the decision that local and CI environments reproduce the legacy schema from code rather than from a shared dump, which affects onboarding time and test reliability.
  • Documentation, audit, and diligence. Committed migrations plus the inventory form a version-controlled schema record useful for compliance evidence, acquisition/technical diligence, and engineer onboarding.
  • A decision not to standardize. Archived, zero dependents, low opportunity score: no platform ticket, no architecture review, no place in the long-term dependency graph. Recording that explicitly prevents a future team from inheriting it as an implicit standard.

When to Consider This Package

Consider it when:

  • You are standing up Laravel against a pre-existing database with no migration history and need a starting point to review rather than to trust.
  • The need is a one-time baseline snapshot — legacy adoption, documentation, audit, or test fixtures — not ongoing schema synchronization.
  • The schema is conventional and moderate in size (roughly dozens of tables: tables, PK/FK, indexes, enums). Below ~a dozen tables, hand-writing is cheaper than validating generated output.
  • You have a senior reviewer with database expertise who can own the schema diff, budgeted at roughly a day of review per medium schema.
  • You can pin the exact version, install it --dev, and accept forking or vendoring if a PHP/Laravel compatibility patch is ever needed.
  • You have verified the Composer constraints for Laravel, PHP, and doctrine/dbal actually admit your target stack — the most common reason adoption fails on modern apps.

Look elsewhere when:

  • Long-term maintenance matters. The repository is archived with no upstream bug-fix or version-support path; ongoing reliance means an internal fork you must staff.
  • You are on a modern Laravel/PHP release and compatibility is unverified — archived packages routinely lag one or two majors behind.
  • The schema leans on vendor-specific features (partitions, custom types, generated columns, spatial types, partial indexes, triggers/views/procedures). A generic generator will silently drop or misrepresent semantics, and silent loss is worse than no tool.
  • You need ongoing or bidirectional diffing. This is point-in-time generation; Laravel's native schema:dump / schema-state tooling is the maintained answer for steady state.
  • The goal is purely documentation — a DB-native dump or information_schema export gets you there with no dependency at all.
  • Your compliance posture requires vendor support, security triage, or a maintained SBOM for anything touching the data layer, even dev-only.

How to Pitch It (Stakeholders)

To executives. We have an existing production database and want Laravel running on it. The choice is weeks of manual schema transcription or a small open-source generator that produces a first-draft migration set in hours. Recommendation: fund a timeboxed spike, not a platform initiative. It is free, it is a tool rather than a dependency, and it carries no runtime, licensing, or production footprint. The honest caveat is that the project is archived, so we treat its output as a reviewed draft and assume ownership of the final migrations — which we would have to do anyway. Net effect: a multi-week workstream compresses into days-to-a-week, and we get a written record of what the legacy schema actually contains, useful well beyond this project. Expected return on the spike is stated plainly: days of effort against weeks of alternative.

To engineering. Point it at an existing database and get migration files out. Install --dev, pin the version, and run it against a read-only replica or scratch connection — never production. Generate into a quarantine directory (e.g. database/migrations/imported), review every file against information_schema as ground truth, replay on an empty database and diff before promoting anything into database/migrations. Expect to hand-fix column ordering, index and foreign-key naming, enum and default-expression handling, and anything the tool quietly dropped. Verify the doctrine/dbal resolution and the actual Artisan command name against php artisan help — documentation and reality have already been shown to drift. Freeze DDL for the duration of generation so the diff is stable. Once the reviewed baseline is committed, switch to schema:dump and retire the tool with a documented date and named owner. Treat it as an accelerator for the first draft, never the authority on the finished schema, and never a production dependency.

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.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox