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

Model Fields Laravel Package

watheqalshowaiter/model-fields

Easily add custom fields to Laravel Eloquent models with watheqalshowaiter/model-fields. A simple trait stores dynamic, validated attributes as JSON, letting you extend models without extra migrations or schema changes.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. watheqalshowaiter/model-fields is a developer-tooling package, not a runtime dependency: it exposes Artisan commands that derive model field definitions (e.g. $fillable) from the application's schema/migrations. That places it alongside ide-helper and similar generators — auto-discovered service provider, no middleware, no request-path footprint. Architecturally it is a clean fit for a Laravel monolith or modular monolith, and a poor fit for teams that hand-maintain fillable arrays as a deliberate review gate.

Integration feasibility. Low. Composer install, optional config publish, run the command, diff the generated output. The 3.2.2 release is a single-line compatibility change ("Support laravel 13"), which is the lowest-risk class of release: a widened illuminate/* constraint with (presumably) no code changes. Integration effort is measured in hours, not sprints.

Technical risk. Concentrated in three areas, none of them severe:

  • Bus factor. Single-maintainer package with a narrow user base. Acceptable only because the blast radius is dev-time code generation and the artifact (committed $fillable arrays) survives the package's abandonment.
  • Introspection fidelity. Correctness depends on mapping the schema builder's column types to PHP-visible fields. Non-standard types (enums, JSON/JSONB, generated/virtual columns, spatial types, composite keys) are the historical failure surface for this category of tool.
  • Constraint-widening without verification. The release note asserts Laravel 13 support but does not state whether the CI matrix actually runs against 13 or whether the constraint was simply relaxed. A green constraint is not the same as tested compatibility.

Key questions for the maintainer/PR review.

  1. Does 3.2.2 change only composer.json, or does it include code changes? Diff it.
  2. Is Laravel 13 in the CI matrix, and what is the minimum PHP version now implied?
  3. Does the tool read migrations, the live schema, or a connection-less schema dump? Can it run in CI without a database?
  4. What is the generation policy — $fillable from nullable/non-nullable, $guarded, $casts, relationship methods — and is it configurable?
  5. How are enums, JSON columns, and generated columns handled?
  6. Is there a --check/dry-run mode suitable for CI enforcement?

Integration Approach

Stack fit. Any Laravel application on 10.x–13.x with Eloquent models backed by conventional migrations. The package is framework-coupled by design, so it inherits Laravel's support window; teams on older majors should pin to the matching prior minor.

Migration path. Install with --dev. Run the generator against a scratch branch, review the diff, and commit only the accepted output. Do not wire the command into deploy or boot — the package should never be able to mutate models outside a developer's working tree.

Compatibility. The only compatibility fact established by this release is a Laravel 13 constraint. Confirm the resolved Illuminate version and PHP floor before upgrading; verify that any transitive dependency (schema introspection, Doctrine DBAL if present) also permits 13. Because 3.2.2 is a patch bump, it is a safe in-place upgrade from 3.2.1 on existing Laravel versions.

Sequencing.

  1. Upgrade within the current Laravel major (3.2.1 → 3.2.2) and confirm no behavior change.
  2. Only then, and only if adopting Laravel 13, re-run the generator on a representative branch and diff against committed models — a constraint bump is the moment latent introspection discrepancies surface.
  3. Add a CI check that regenerates into a temp path and fails on drift, so the tool becomes a guardrail rather than an occasional script.
  4. If drift is noisy or the diff is unreviewable, drop the package and keep the committed output.

Operational Impact

Maintenance. Near-zero ongoing cost: dev-only dependency, no runtime services, no migrations of its own. The real maintenance burden is reviewing generated diffs and keeping the pinned version current with Laravel majors — a few hours per year.

Support. Community-maintained, single maintainer, no commercial backing or SLA. Acceptable for tooling; unacceptable if the generator ever becomes load-bearing in a pipeline. Budget for the possibility of vendoring or forking.

Scaling. Scales with model count, not traffic. Generation time is linear in tables and irrelevant at any realistic application size. No runtime scaling consideration whatsoever.

Failure modes.

  • Silent under-generation. A new column not recognized as fillable leaves the field unassignable — surfaces as a confusing mass-assignment/no-op bug, not a crash.
  • Silent over-generation. The inverse is worse: an unintended column entering $fillable widens the mass-assignment surface. This is the primary security-relevant risk and the reason output must be code-reviewed, never auto-committed.
  • Introspection errors. Unsupported column types throwing at generation time — loud, cheap, and confined to dev.
  • Constraint drift. Composer resolving an untested Illuminate version after a constraint-widening patch, yielding subtly different schema reflection.
  • Abandonment. Package stops tracking new Laravel majors; workaround is to stop upgrading it, since the generated artifacts remain valid.

Ramp-up. Under an hour for a Laravel-fluent engineer: one install, one command, one diff. The learning cost is not in the tool but in establishing the team convention for what belongs in $fillable — that decision should be made and documented before the first run, not discovered through generated output.

Assessment of this release. 3.2.2 is a routine compatibility patch with no breaking changes, deprecations, or new capability. It does not change the recommendation — adopt as a dev-only convenience with reviewed output — but it does extend the package's useful life into Laravel 13 and removes it as an upgrade blocker. The one action item is verification: confirm the change is constraint-only and that CI actually exercises Laravel 13 before treating "supported" as "tested."

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.
abbasudo/artisan-route
mirvan/ippanel
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