Package Data | |
---|---|
Maintainer Username: | yarob |
Maintainer Contact: | yarob83@gmail.com (Yarob Al-Taay) |
Package Create Date: | 2017-02-25 |
Package Last Update: | 2017-02-26 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2025-02-13 03:01:08 |
Package Statistics | |
---|---|
Total Downloads: | 82 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 1 |
Total Watchers: | 1 |
Total Forks: | 0 |
Total Open Issues: | 0 |
Add settings feature to Eloquent models in Laravel 5.
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.
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"
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'
];
}
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.
Better demonstrated in example
$user = App\User::first();
$user->settings()->save(array(
'address' => 'London',
'phone_number' => '0123456789'
));
print_r($user->settings);
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',
...
],
...
];
laravel-model-settings was written by Yarob Al-Taay and is released under the MIT License.
Copyright (c) 2017 Yarob Al-Taay