PHPackages                             spinzar/setting - 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. spinzar/setting

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

spinzar/setting
===============

Persistent settings package for Laravel.

1.0.0(5y ago)0482MITPHPPHP ^5.6.0|^7.0|^7.1|^7.2|^7.3|^7.4

Since Nov 3Pushed 5y ago1 watchersCompare

[ Source](https://github.com/spinzar/setting)[ Packagist](https://packagist.org/packages/spinzar/setting)[ RSS](/packages/spinzar-setting/feed)WikiDiscussions main Synced 4d ago

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

Persistent settings package for Laravel
=======================================

[](#persistent-settings-package-for-laravel)

[![StyleCI](https://camo.githubusercontent.com/6dfce9ae3e59219f0191cb89ffa7a8b259ed563108c6cdb11e9e50f27e33808c/68747470733a2f2f6769746875622e7374796c6563692e696f2f7265706f732f3330393539383139372f736869656c643f6272616e63683d6d61696e)](https://github.styleci.io/repos/309598197?branch=main)

This package allows you to save settings in a more persistent way. You can use the database and/or json file to save your settings. You can also override the Laravel config.

- Driver support
- Helper function
- Blade directive
- Override config values
- Custom file, table and columns
- Auto save
- Extra columns
- Cache support

Getting Started
---------------

[](#getting-started)

### 1. Install

[](#1-install)

Run the following command:

```
composer require spinzar/setting
```

### 2. Register (for Laravel &lt; 5.5)

[](#2-register-for-laravel--55)

Register the service provider in `config/app.php`

```
Spinzar\Setting\Provider::class,
```

Add alias if you want to use the facade.

```
'Setting' => Spinzar\Setting\Facade::class,
```

### 3. Publish

[](#3-publish)

Publish config file.

```
php artisan vendor:publish --tag=setting
```

### 4. Database

[](#4-database)

Create table for database driver

```
php artisan migrate
```

### 5. Configure

[](#5-configure)

You can change the options of your app from `config/setting.php` file

Usage
-----

[](#usage)

You can either use the helper method like `setting('foo')` or the facade `Setting::get('foo')`

### Facade

[](#facade)

```
Setting::get('foo', 'default');
Setting::get('nested.element');
Setting::set('foo', 'bar');
Setting::forget('foo');
$settings = Setting::all();
```

### Helper

[](#helper)

```
setting('foo', 'default');
setting('nested.element');
setting(['foo' => 'bar']);
setting()->forget('foo');
$settings = setting()->all();
```

You can call the `save()` method to save the changes.

### Auto Save

[](#auto-save)

If you enable the `auto_save` option in the config file, settings will be saved automatically every time the application shuts down if anything has been changed.

### Blade Directive

[](#blade-directive)

You can get the settings directly in your blade templates using the helper method or the blade directive like `@setting('foo')`

### Override Config Values

[](#override-config-values)

You can easily override default config values by adding them to the `override` option in `config/setting.php`, thereby eliminating the need to modify the default config files and also allowing you to change said values during production. Ex :

```
'override' => [
        "app.name" => "app_name",
        "app.env" => "app_env",
        "mail.driver" => "app_mail_driver",
        "mail.host" => "app_mail_host",
],
```

The values on the left corresponds to the respective config value (Ex: config('app.name')) and the value on the right is the name of the `key` in your settings table/json file.

### JSON Storage

[](#json-storage)

You can modify the path used on run-time using `setting()->setPath($path)`.

### Database Storage

[](#database-storage)

If you want to use the database as settings storage then you should run the `php artisan migrate`. You can modify the table fields from the `create_settings_table` file in the migrations directory.

#### Extra Columns

[](#extra-columns)

If you want to store settings for multiple users/clients in the same database you can do so by specifying extra columns:

```
setting()->setExtraColumns(['user_id' => Auth::user()->id]);
```

where `user_id = x` will now be added to the database query when settings are retrieved, and when new settings are saved, the `user_id` will be populated.

If you need more fine-tuned control over which data gets queried, you can use the `setConstraint` method which takes a closure with two arguments:

- `$query` is the query builder instance
- `$insert` is a boolean telling you whether the query is an insert or not. If it is an insert, you usually don't need to do anything to `$query`.

```
setting()->setConstraint(function($query, $insert) {
	if ($insert) return;
	$query->where(/* ... */);
});
```

### Custom Drivers

[](#custom-drivers)

This package uses the Laravel `Manager` class under the hood, so it's easy to add your own storage driver. All you need to do is extend the abstract `Driver` class, implement the abstract methods and call `setting()->extend`.

```
class MyDriver extends Spinzar\Setting\Contracts\Driver
{
	// ...
}

setting()->extend('mydriver', function($app) {
	return $app->make('MyDriver');
});
```

Changelog
---------

[](#changelog)

Please see [Releases](../../releases) for more information what has changed recently.

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

[](#contributing)

Pull requests are more than welcome. You must follow the PSR coding standards.

Security
--------

[](#security)

If you discover any security related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Nassim Nasibullah](https://github.com/spinzar)
- [All Contributors](../../contributors)

License
-------

[](#license)

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

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 57.1% 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

Unknown

Total

1

Last Release

2019d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/987ff229c44a1c7100e95f77e4bc07c911f99ff9f270bbcf7b9b4bac0318635f?d=identicon)[spinzar](/maintainers/spinzar)

---

Top Contributors

[![spinzar](https://avatars.githubusercontent.com/u/73431676?v=4)](https://github.com/spinzar "spinzar (4 commits)")[![nassimnasibullah](https://avatars.githubusercontent.com/u/12146118?v=4)](https://github.com/nassimnasibullah "nassimnasibullah (3 commits)")

---

Tags

laravelSettingsconfigpersistent

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/spinzar-setting/health.svg)

```
[![Health](https://phpackages.com/badges/spinzar-setting/health.svg)](https://phpackages.com/packages/spinzar-setting)
```

###  Alternatives

[akaunting/laravel-setting

Persistent settings package for Laravel

495805.1k7](/packages/akaunting-laravel-setting)[efriandika/laravel-settings

Laravel 5 Persistent Settings

6039.6k1](/packages/efriandika-laravel-settings)[oriceon/laravel-settings

Laravel 5 persistent settings

207.1k1](/packages/oriceon-laravel-settings)[illuminatech/nova-config

A Laravel Nova tool for application configuration management.

134.2k](/packages/illuminatech-nova-config)

PHPackages © 2026

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