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 Model Settings Laravel Package

dragon-code/laravel-model-settings

Store per-model key-value settings in Laravel with dragon-code/laravel-model-settings. Attach typed settings to any Eloquent model, read and write them through a simple API, and keep configuration data with your records without extra tables.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for a settings/preferences layer. Version 1.3.0 materially widens the package's scope beyond a key–value store: per-model and per-setting-key payload casts (#97), explicit handling of blank JSON values (#101), and a distinction between persistent defaults and model ID 0 (#100) are exactly the edge cases that erode engineering estimates when a team hand-rolls its own settings table. This release makes "use the package" a defensible default answer for the build-vs-buy question.
  • Roadmap sequencing for any per-tenant, per-user, or per-entity configuration feature. Hardened settings owner validation (#95) plus the owner/persistence semantics fixes mean features like tenant-level branding, notification preferences, or per-workspace feature flags can ship without a bespoke authorization review of every write path.
  • Bulk operations as a shippable product capability. Bounded-query bulk mutations with an overridable purge (#96) and typed bulk mutation exceptions (#102) turn "bulk edit settings across N owners" from a performance-risk backlog item into something with predictable query counts and catchable, inspectable failures — relevant for admin tooling, imports, and migration scripts.
  • Internationalization and admin UX scope. Commands for generating localization files (#73) means multi-locale configuration surfaces (translated setting labels, enum options, validation messages) can be scaffolded rather than hand-maintained, which affects how early you can commit to localization in a release plan.
  • API surface stability for downstream and internal consumers. The docs work on "focused API and package boundaries" (#99) is a signal worth citing when deciding whether to expose the package to other teams or to your own public API layer.
  • Not a decision driver: the Docusaurus site, branding assets, SEO metadata, theme accents, npm dependency bumps, and AGENTS/SKILL files (#65, #67, #72, #75, #77, #79, #80, #82, #83, #85, #98, #71) are documentation and contributor-tooling changes. They improve onboarding and maintenance confidence but should not move a roadmap conversation on their own.

When to Consider This Package

Consider adoption when:

  • You need settings or preferences attached to more than one owner type (user, team, tenant, workspace) and you want that ownership validated by the package rather than by ad-hoc middleware or policies — the owner validation hardening in #95 is directly aimed at this.
  • Your settings payloads are heterogeneous — some scalars, some arrays, some structured objects — and you want casting declared per model or per setting key (#97) instead of sprinkling accessors and JSON decoding across the codebase.
  • You expect bulk reads and writes (imports, admin bulk edit, tenant provisioning, migrations) and care about bounded query counts and an explicit purge path (#96).
  • You need to represent "explicitly empty" distinctly from "absent" (#101) and want persistent defaults that do not collide with a legitimate model ID 0 (#100). Both are classic sources of silent data bugs.
  • Your product plan includes localized settings surfaces and you would rather generate localization files via command (#73) than maintain them by hand.
  • You are on a modern Laravel/PHP baseline and are comfortable taking a package whose release cadence is active and whose maintainer is the sole significant contributor.

Look elsewhere when:

  • Your settings needs are genuinely trivial (a handful of columns on the users table). A dedicated package adds a table, a model, and a mental model you will not earn back.
  • You require a vendor with an SLA, multiple maintainers, or a formal deprecation policy. Every substantive change in 1.3.0 is authored by a single contributor; that is a real continuity risk to name in your assessment.
  • You need auditable change history with actor attribution out of the box. Nothing in this release speaks to an audit trail; you would be layering that on yourself.
  • You are still on an older Laravel major and cannot absorb the churn implied by an actively evolving API — check the changelog for the actual supported matrix before committing.
  • You need fine-grained per-setting authorization beyond owner validation. This release hardens that a setting's owner is valid; it does not claim to model row-level permissions for who may read or write individual keys.

How to Pitch It (Stakeholders)

For executives: This is a Laravel settings package that has just shipped its most substantive release to date. The headline is that it now handles the cases that normally turn a simple "user preferences" feature into a multi-sprint cleanup: typed payloads per model, a real distinction between unset and empty values, correct handling of default values, bulk updates with predictable database load, and validated ownership so one tenant cannot write another's configuration. The rest of the release is documentation and tooling, which lowers onboarding cost but does not change scope. The practical effect on the roadmap is that per-user and per-tenant configuration features can be scheduled as normal feature work rather than as infrastructure projects. The one caveat to state plainly: this is effectively a single-maintainer package. Adopting it is low-cost and reversible, but it should be treated as a dependency we monitor, not one we assume will be maintained on our schedule.

For engineering: The release resolves four sharp edges we would otherwise hit ourselves. #97 allows payload casts to be declared per model and per setting key, so structured settings stop needing bespoke accessors. #101 stores blank JSON explicitly, and #100 separates persistent defaults from model ID 0 — together these remove a class of "is this unset or is it empty?" bugs that are painful to find in production. #96 adds bulk mutations with bounded queries and an overridable purge, which makes admin bulk edit and tenant provisioning safe to build on top of. #102 replaces package logging with typed bulk mutation exceptions, so bulk failures become catchable and testable rather than log-scraped. #95 hardens settings owner validation, which is the security-relevant item and warrants a review of our own owner-resolution logic at the integration boundary. #73 adds commands to generate localization files, useful if we localize settings labels or validation messages. Documentation was rebuilt on Docusaurus with an explicitly documented API and package boundary (#99), so we have a clearer contract to code against. Nothing in this release is flagged as breaking; treat the changed items as behavior refinements and re-run our integration tests around defaults and empty payloads before merging the upgrade.

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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect