2017 © Pedro Peláez
 

library laravel-model-settings

Laravel 5.0+ package to manage eloquent settings in JSON format

image

yarob/laravel-model-settings

Laravel 5.0+ package to manage eloquent settings in JSON format

  • Sunday, February 26, 2017
  • by yarob
  • Repository
  • 1 Watchers
  • 1 Stars
  • 4 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 33 % Grown

The README.md

Laravel Model Settings

Add settings feature to Eloquent models in Laravel 5., (*1)

Background

This has been developed to simplify adding "settings" feature to any eloquent model on your laravel project., (*2)

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., (*3)

settings will be casted into Laravel Collection for maximum functionality and usage., (*4)

Installation

To install the package via Composer:, (*5)

$ composer require yarob/laravel-model-settings

Then, update config/app.php by adding an entry for the service provider., (*6)

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

Finally, via terminal, publish the default configuration file:, (*7)

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

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, (*8)

use Yarob\LaravelModelSettings\HasSettings;

class User extends Model
{
    use hasSettings;

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

}

Migration

Your model MUST have column named settings in the database to store the settings values., (*9)

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., (*10)

Usage

Better demonstrated in example, (*11)

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

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

print_r($user->settings);

Configuration

Configuration was made to be as flexible as possible. You can add the allowed settings keys per Model basis., (*12)

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., (*13)

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:, (*14)

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, (*15)

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

laravel-model-settings was written by Yarob Al-Taay and is released under the MIT License., (*16)

Copyright (c) 2017 Yarob Al-Taay, (*17)

The Versions

26/02 2017

dev-master

9999999-dev

Laravel 5.0+ package to manage eloquent settings in JSON format

  Sources   Download

MIT

by Yarob Al-Taay

26/02 2017

1.0.1

1.0.1.0

Laravel 5.0+ package to manage eloquent settings in JSON format

  Sources   Download

MIT

by Yarob Al-Taay

25/02 2017

1.0.0

1.0.0.0

Laravel 5.0+ package to manage eloquent settings in JSON format

  Sources   Download

MIT

by Yarob Al-Taay