PHPackages                             yarob/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. yarob/laravel-model-settings

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

yarob/laravel-model-settings
============================

Laravel 5.0+ package to manage eloquent settings in JSON format

1.0.1(9y ago)183MITPHP

Since Feb 25Pushed 9y ago1 watchersCompare

[ Source](https://github.com/EazyServer/laravel-model-settings)[ Packagist](https://packagist.org/packages/yarob/laravel-model-settings)[ RSS](/packages/yarob-laravel-model-settings/feed)WikiDiscussions master Synced today

READMEChangelog (2)DependenciesVersions (3)Used By (0)

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

[](#laravel-model-settings)

Add settings feature to Eloquent models in Laravel 5.

Background
----------

[](#background)

This has been developed to simplify adding "settings" feature to any eloquent model on your laravel project.

Settings WILL be stored in `json` format/object! Is `json` the best way? Well it's your call! pros: super flexible, you can add/remove settings without code alteration (apart from `app/config/model-settings.php` see below). cons: expensive when querying/searching for certain `key => value` in `settings` per model.

`settings` will be casted into Laravel `Collection` for maximum functionality and usage.

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

[](#installation)

To install the package via Composer:

```
$ composer require yarob/laravel-model-settings
```

Then, update `config/app.php` by adding an entry for the service provider.

```
'providers' => [
    // ...
    Yarob\LaravelModelSettings\ServiceProvider::class,
];
```

Finally, via terminal, publish the default configuration file:

```
php artisan vendor:publish --provider="Yarob\LaravelModelSettings\ServiceProvider"
```

Updating your Eloquent Models
-----------------------------

[](#updating-your-eloquent-models)

Your models should use the `hasSettings` trait. You must also add `settings` to your `fillable` array as shown in the example below

```
use Yarob\LaravelModelSettings\HasSettings;

class User extends Model
{
    use hasSettings;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'settings'
    ];

}
```

Migration
---------

[](#migration)

Your model MUST have column named `settings` in the database to store the settings values.

You can add this manually via a migration on the intended model `$table->json('settings')->nullable();`. The column should be big enough to accommodate all settings after json encoded.

Usage
-----

[](#usage)

Better demonstrated in example

```
$user = App\User::first();

$user->settings()->save(array(
		'address' => 'London',
		'phone_number' => '0123456789'
	    ));

print_r($user->settings);
```

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

[](#configuration)

Configuration was made to be as flexible as possible. You can add the allowed settings keys per Model basis.

Global configuration can be set in the `app/config/model-settings.php` file. By default, `phone_number` and `address` settings keys have been added to `User` model. But feel free to change that.

If a configuration isn't set, then the package defaults from `vendor/yarob/laravel-model-settings/resources/config/model-settings.php` are used. Here is an example configuration:

```
return [
    'User' => [
    		'phone_number',
    		'address',
    	],
];
```

Pay attention that Model name in `model-settings.php` is case sensitive! so if you have a `foo` Model, then

```
return [
    'foo' => [
    		'key1',
    		'key2',
    		...
    	],
    	...
];
```

Copyright and License
---------------------

[](#copyright-and-license)

[laravel-model-settings](https://github.com/EazyServer/laravel-model-settings)was written by [Yarob Al-Taay](https://twitter.com/TheEpicVoyage) and is released under the [MIT License](LICENSE.md).

Copyright (c) 2017 Yarob Al-Taay

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

2

Last Release

3411d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7568956164220ead625590e1eec22e5864cec256daefba740d4328dfea07bc77?d=identicon)[yarob](/maintainers/yarob)

---

Top Contributors

[![yarobadtrak](https://avatars.githubusercontent.com/u/5136889?v=4)](https://github.com/yarobadtrak "yarobadtrak (5 commits)")

---

Tags

laravel

### Embed Badge

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

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

###  Alternatives

[pear/pear

This is the definitive source of PEAR's core files.

1141.7M22](/packages/pear-pear)[glhd/bits

92432.5k5](/packages/glhd-bits)[rector/rector-downgrade-php

Rector downgrade PHP rules

47995.9k4](/packages/rector-rector-downgrade-php)[valentin-morice/filament-json-column

A simple package to view and edit your JSON columns in Filament

59494.5k](/packages/valentin-morice-filament-json-column)

PHPackages © 2026

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