axn/laravel-models-generator
Generate Eloquent models directly from your existing database schema. Laravel Models Generator inspects your tables and creates ready-to-use model classes with fillable fields, relationships, and more, making it easy to bootstrap new projects or reverse-engineer legacy databases.
Architecture fit. Unchanged in kind. axn/laravel-models-generator remains a dev-time scaffolding tool that introspects a database schema and emits Eloquent models — outside the production request path, best understood as a one-shot or occasional codegen utility. 8.0.0 does not alter the architectural posture; it is a dependency-floor release, not a feature release.
Integration feasibility. Still Composer-only, still require-dev, still no runtime coupling. What changed is the floor: Laravel 12+ and Doctrine DBAL 4+ only. Any target on Laravel 10 or 11 is now hard-excluded at the Composer level. Feasibility remains high mechanically on a Laravel 12 estate and drops to zero (absent a fork or an older pin) everywhere else.
Technical risk. The prior assessment's headline risk — abandonment — is materially contradicted by this release. A repository that ships a deliberate major-version bump dropping EOL framework support is being maintained; the "abandonment risk has already materialized / no upstream to receive fixes for version drift" conclusion was wrong or based on stale repository metadata. That is the single most important correction here, because it was the stated basis for the "throwaway only" verdict. The remaining risk profile is unchanged and still real:
Key questions for the maintainer/spike owner. Items 1 and 6 from the prior list partially resolve; the rest stand.
require leakageStack fit. Unchanged: suited to database-first / legacy-schema onboarding where hand-writing 40–150 models is the actual cost driver. Poor fit for greenfield migration-first projects and for teams with heavy custom model behavior. The new constraint narrows the eligible population to Laravel 12 teams only — on a mixed-version estate, this tool is usable in exactly one place.
Migration path. Softened from the prior "disposable, remove immediately" stance, but only modestly:
require-dev on a short-lived branch.composer.json once generation is complete, or keep it pinned in require-dev with an owning engineer and a revisit-at-each-major note. Keeping it is now defensible because upstream is shipping; it is not yet defensible to leave it unpinned and unowned.Forking remains the right answer only for repeat generation with custom type-map patches — not as a default response to abandonment, which is no longer the situation.
Compatibility. Re-verify in this order, because the ordering changed: (1) confirm the target app is on Laravel 12 — if not, stop, the decision is made; (2) Composer resolve with DBAL 4 against our existing pins, watching for DBAL conflicts in other dev tooling; (3) generation against a representative schema including enums, JSON, nullable FKs, and at least one pivot table; (4) diff review of casts and relationship names. Steps 3–4 are now more important than step 2, since the release notes suggest the generator logic itself is unchanged.
Sequencing. (a) Half-day spike on 5–10 tables including the awkward types; (b) go/no-go on output quality; (c) full-schema generation on a branch with a named diff reviewer; (d) decide keep-pinned vs. remove vs. fork based on whether schema churn is expected; (e) if keeping, pin exactly and record the owner. Still days, not weeks. Still do not sequence ahead of schema stabilization.
Maintenance. Revised from "zero upstream, non-zero internal" to low upstream, non-zero internal. Upstream is active and just demonstrated it will track Laravel majors, which removes the "it will silently block our next upgrade and nobody will know why" failure mode — provided we pin and revisit deliberately rather than drifting. Internal cost is unchanged: reviewing generated output and possibly patching type maps. The realistic residual risk is single-maintainer discontinuity, mitigated by pinning, not by process.
Support. Still no vendor, no SLA, no issue-triage guarantee. The difference is that a defect now can be fixed upstream, which makes a bug report a viable escalation path where previously there was none. Still correct to keep it out of CI gates and build pipelines — not because it is abandoned, but because it is a single-maintainer dev tool whose output requires human review anyway.
Scaling. No runtime surface; no latency, memory, queue, or cache impact. Organizational scaling concerns stand: generate from one canonical schema dump, review as a normal PR, and expect review — not generation — to be the bottleneck on 100+ table schemas. The new version floor adds a mild estate-scaling wrinkle: on a mixed Laravel estate, only the 12.x services can use it, so model-generation conventions will diverge across services unless the fork path is taken.
Failure modes.
$fillable produce bugs far from the generator. Mitigate by reviewing every non-trivial table.hasMany/belongsTo, mishandled pivots and polymorphic relations.Ramp-up. Unchanged and low: an Artisan command and a Composer install; a mid-level Laravel developer is productive within an hour. The real ramp-up remains review discipline — state before the spike that generated models require human sign-off on casts, fillables, and relations, or the review will be skipped and the failure modes above will land in production.
Verdict. Revised. 8.0.0 overturns the abandonment finding that drove the prior "throwaway only" verdict: this is a maintained, narrow, dev-only scaffold that tracks Laravel majors. Adopt it for a specific database-first task on Laravel 12, as a require-dev dependency that is either removed after generation or pinned with a named owner and a revisit-at-each-major note. Mandatory output review stands. The 23-star/0-dependent profile keeps this a small-bet tool rather than an endorsed standard, and the release adds no functional value — if the spike is already done on 7.x, there is no reason to move to 8.0.0 unless and until the app moves to Laravel 12.
How can I help you explore Laravel packages today?