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

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

danvaly/laravel-setting
=======================

Persistent settings package for Laravel.

v9.0.0(3y ago)010MITPHPPHP ^8.0.2

Since Jan 3Pushed 2y ago1 watchersCompare

[ Source](https://github.com/danvaly/laravel-setting)[ Packagist](https://packagist.org/packages/danvaly/laravel-setting)[ RSS](/packages/danvaly-laravel-setting/feed)WikiDiscussions main Synced 1mo ago

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

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

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

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. This is a fork from akaunting/laravel-setting

- Driver support
- Helper function
- Blade directive
- Override config values
- Encryption
- 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 danvaly/laravel-setting
```

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

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

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

```
Danvaly\Setting\Provider::class,
```

Add alias if you want to use the facade.

```
'Setting' => Danvaly\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.

### Encryption

[](#encryption)

If you like to encrypt the values for a given key, you can pass the key to the `encrypted_keys` option in `config/setting.php` and the rest is automatically handled by using Laravel's built-in encryption facilities. Ex:

```
'encrypted_keys' => [
    "payment.key",
],
```

### 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 Danvaly\Setting\Contracts\Driver
{
	// ...
}

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

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

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

1222d ago

### Community

Maintainers

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

---

Top Contributors

[![valitmt](https://avatars.githubusercontent.com/u/129178673?v=4)](https://github.com/valitmt "valitmt (2 commits)")[![danvaly](https://avatars.githubusercontent.com/u/451940?v=4)](https://github.com/danvaly "danvaly (1 commits)")

---

Tags

laravelSettingsconfigpersistent

###  Code Quality

TestsPHPUnit

### Embed Badge

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

```
[![Health](https://phpackages.com/badges/danvaly-laravel-setting/health.svg)](https://phpackages.com/packages/danvaly-laravel-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)
