PHPackages                             dragon-code/laravel-model-settings - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dragon-code/laravel-model-settings

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dragon-code/laravel-model-settings
==================================

Model Settings for your Laravel application

1.0.0(3d ago)12MITPHP ^8.3

Since Jul 8Compare

[ Source](https://github.com/TheDragonCode/laravel-model-settings)[ Packagist](https://packagist.org/packages/dragon-code/laravel-model-settings)[ Docs](https://github.com/dragon-code/laravel-model-settings)[ RSS](/packages/dragon-code-laravel-model-settings/feed)WikiDiscussions Synced today

READMEChangelog (2)Dependencies (6)Versions (4)Used By (0)

Laravel Model Settings
======================

[](#laravel-model-settings)

  ![Laravel Model Settings](https://camo.githubusercontent.com/1cd079bfb6512892f64404dffb3f225fb3119395ae965c2788c9b236f3c1889d/68747470733a2f2f62616e6e6572732e6265796f6e64636f2e64652f4c61726176656c2532304d6f64656c25323053657474696e67732e706e673f7061747465726e3d746f706f677261706879267374796c653d7374796c655f3226666f6e7453697a653d3130307078266d643d312673686f7757617465726d61726b3d31267468656d653d6c69676874267061636b6167654d616e616765723d636f6d706f7365722b72657175697265267061636b6167654e616d653d647261676f6e2d636f64652532466c61726176656c2d6d6f64656c2d73657474696e6773266465736372697074696f6e3d4d6f64656c2b53657474696e67732b666f722b796f75722b4c61726176656c2b6170706c69636174696f6e26696d616765733d68747470732533412532462532466c61726176656c2e636f6d253246696d672532466c6f676f6d61726b2e6d696e2e737667)[![Stable Version](https://camo.githubusercontent.com/c11e2585a66528999002519de86e4ea42c1f82bbc8d7f26b31e22cba17bbc2c5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f546865447261676f6e436f64652f6c61726176656c2d6d6f64656c2d73657474696e67733f6c6162656c3d7061636b6167697374267374796c653d666c61742d737175617265)](https://packagist.org/packages/dragon-code/laravel-model-settings)[![Total Downloads](https://camo.githubusercontent.com/aa4e765d55a472a13190a8dc4136d93abfa53876e28c59f1199f865f5b5a32fa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f647261676f6e2d636f64652f6c61726176656c2d6d6f64656c2d73657474696e67732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dragon-code/laravel-model-settings)[![License](https://camo.githubusercontent.com/58a465d49d2d36fd992d77d5bb8ea9f592183ace441d2da00b2042f38dd12905/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f647261676f6e2d636f64652f6c61726176656c2d6d6f64656c2d73657474696e67732e7376673f7374796c653d666c61742d737175617265)](LICENSE)

> Store settings for individual Eloquent models, with optional defaults shared by models of the same type.

Use this package when each model needs its own settings, but should fall back to shared values when a model value is missing.

Installation
------------

[](#installation)

Install the package via [Composer](https://getcomposer.org):

```
composer require dragon-code/laravel-model-settings
```

Publish the config and migration, then run migrations:

```
php artisan vendor:publish --tag="model_settings"
php artisan migrate
```

Quick Start
-----------

[](#quick-start)

Add the `HasSettings` trait to a model:

```
use DragonCode\LaravelModelSettings\Concerns\HasSettings;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasSettings;
}
```

Use settings on a saved model:

```
$user = User::query()->findOrFail(123);

$user->settings()->set('timezone', 'UTC');
$user->settings()->set('notifications', ['email' => true]);

$user->settings()->get('timezone');      // 'UTC'
$user->settings()->get('notifications'); // ['email' => true]
$user->settings()->get('missing');       // null

$user->settings()->all();                // Illuminate\Support\Collection

$user->settings()->forget('timezone');
$user->settings()->get('timezone');      // null
```

Calling `set()` with a blank value removes the model setting. Blank values include `null`, an empty string, and an empty array.

Default Settings
----------------

[](#default-settings)

Default settings are fallback values shared by models of the same type:

```
(new User)->defaultSettings()->set('timezone', 'UTC');

$user->settings()->get('timezone'); // 'UTC'

$user->settings()->set('timezone', 'Europe/Paris');
$user->settings()->get('timezone'); // 'Europe/Paris'

$user->settings()->forget('timezone');
$user->settings()->get('timezone'); // 'UTC'
```

Default settings are stored with the model morph class and `item_id = 0`.

API
---

[](#api)

MethodReturnsDescription`all()``Collection`Returns defaults merged with model settings. Model values win.`get(UnitEnum|string|int $key)``mixed`Returns the model value, then the default value, then `null`.`set(UnitEnum|string|int $key, mixed $value)``void`Creates, updates, or removes a model setting.`forget(UnitEnum|string|int $key)``void`Removes a model setting.Setting Keys
------------

[](#setting-keys)

Keys can be strings, integers, or PHP enums:

```
enum UserSetting: string
{
    case Timezone = 'timezone';
}

$user->settings()->set(UserSetting::Timezone, 'UTC');
$user->settings()->get(UserSetting::Timezone); // 'UTC'
```

Backed enums, unit enums, strings, and integers are supported.

Configuration
-------------

[](#configuration)

After publishing, edit `config/model_settings.php`:

OptionEnvironment variableDefault`model`-`DragonCode\LaravelModelSettings\Models\Settings``connection``MODEL_SETTINGS_DATABASE_CONNECTION``env('DATABASE_CONNECTION')``table``MODEL_SETTINGS_DATABASE_TABLE``settings`The migration stores settings in one table with `item_type`, string `item_id`, `key`, and JSONB `payload`. Each setting is unique by `item_type`, `item_id`, and `key`. The string `item_id` column supports integer and UUID model keys.

Testing
-------

[](#testing)

```
composer test
composer test:coverage
```

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](https://github.com/TheDragonCode/.github/blob/main/CONTRIBUTING.md) for details.

Security
--------

[](#security)

If you've found a security bug, mail  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Andrey Helldar](https://github.com/andrey-helldar)
- [All Contributors](../../graphs/contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance99

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

2d ago

Major Versions

0.1.0 → 1.0.02026-07-07

### Community

Maintainers

![](https://www.gravatar.com/avatar/b77790e612f1c9beed1e1533e36eba4954fbd6da2a5c9f71e845cd0f5465f0ad?d=identicon)[Helldar](/maintainers/Helldar)

---

Tags

Settingslaravel-model-settingsmodel settings

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/dragon-code-laravel-model-settings/health.svg)

```
[![Health](https://phpackages.com/badges/dragon-code-laravel-model-settings/health.svg)](https://phpackages.com/packages/dragon-code-laravel-model-settings)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.3M347](/packages/psalm-plugin-laravel)[glorand/laravel-model-settings

Model Settings for your Laravel app

9141.2M4](/packages/glorand-laravel-model-settings)[api-platform/laravel

API Platform support for Laravel

58174.6k17](/packages/api-platform-laravel)[wearepixel/laravel-cart

A cart implementation for Laravel

1374.8k](/packages/wearepixel-laravel-cart)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
