2017 © Pedro Peláez
 

library laravel-model-settings

Add simple yet flexible settings to your Laravel models.

image

cklmercer/laravel-model-settings

Add simple yet flexible settings to your Laravel models.

  • Thursday, March 9, 2017
  • by cklmercer
  • Repository
  • 5 Watchers
  • 31 Stars
  • 2,167 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 8 Forks
  • 1 Open issues
  • 9 Versions
  • 8 % Grown

The README.md

laravel-model-settings

Simple yet flexible settings for your Laravel models., (*1)

Note: I will be updating this plugin in the near future to better match the API of the new cache() helper method that has been introduced in Laravel 5.3, (*2)

Installation

1.) Install via composer
composer require cklmercer/laravel-model-settings
2.) Add a JSON settings field to your model's migration.

create_users_table.php, (*3)

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->string('password');
    $table->json('settings');
    $table->rememberToken();
    $table->timestamps();
});
3.) Use the trait Cklmercer\ModelSettings\HasSettings within your model.

User.php, (*4)

use Cklmercer\ModelSettings\HasSettings;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable 
{
    use HasSettings;

    // truncated for brevity..
}

Usage

1.) Get all of the model's settings.
$user = App\User::first();

$user->settings()->all(); // Returns an array of the user's settings.
$user->settings()->get(); // Returns an array of the user's settings.
2.) Get a specific setting.
$user = App\User::first();

$user->settings()->get('some.setting');
$user->settings()->get('some.setting', $defaultValue); // With a default value.
$user->settings('some.setting'); // Quicker access.
3.) Add or update a setting.
$user = App\User::first();

$user->settings()->set('some.setting', 'new value');
$user->settings()->update('some.setting', 'new value');
4.) Determine if the model has a specific setting.
$user = App\User::first();

$user->settings()->has('some.setting');
5.) Remove a setting from a model.
$user = App\User::first();

$user->settings()->delete('some.setting');
$user->settings()->forget('some.setting');
6.) Set the default settings for a new model.

If you define $defaultSettings as an array property on your model, we will use its value as the default settings for any new models that are created without settings., (*5)

User.php, (*6)

use Cklmercer\ModelSettings\HasSettings;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable 
{
    use HasSettings;

    /**
     * The model's default settings.
     * 
     * @var array
     */
    protected $defaultSettings = [
        'homepage' => '/profile'
    ];

    // truncated for brevity..
}
7.) Specify the settings that are allowed.

If you define $allowedSettings as an array property then only settings which match a value within the $allowedSettings array will be saved on the model., (*7)

User.php, (*8)

use Cklmercer\ModelSettings\HasSettings;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable 
{
    use HasSettings;

    /**
     * The model's allowed settings.
     * 
     * @var array
     */
    protected $allowedSettings = ['homepage'];

    // truncated for brevity..
}
8.) Using another method name other than settings()

If you prefer to use another name other than settings , you can do so by defining a $mapSettingsTo property. This simply maps calls to the method (such as config()) to the settings() method., (*9)

User.php, (*10)

use Cklmercer\ModelSettings\HasSettings;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable 
{
    use HasSettings;

    /**
     * The settings field name.
     * 
     * @var string
     */
    protected $mapSettingsTo = 'config';

    // truncated for brevity..
}

License

MIT, (*11)

The Versions

09/03 2017

dev-master

9999999-dev

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

 

by Cody Mercer

laravel settings models

20/07 2016

v1.2.0

1.2.0.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

 

by Cody Mercer

laravel settings models

18/07 2016

v1.1.1

1.1.1.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Cody Mercer

laravel settings models

18/07 2016

v1.1.0

1.1.0.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Cody Mercer

laravel settings models

18/07 2016

v1.0.4

1.0.4.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Cody Mercer

laravel settings models

18/07 2016

v1.0.3

1.0.3.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Cody Mercer

laravel settings models

18/07 2016

v1.0.2

1.0.2.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Cody Mercer

laravel settings models

18/07 2016

v1.0.1

1.0.1.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Cody Mercer

laravel settings models

18/07 2016

v1.0.0

1.0.0.0

Add simple yet flexible settings to your Laravel models.

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Cody Mercer

laravel settings models