internetcode/laravel-user-settings is a Laravel package for easy boolean settings per user.
It currently has 37 GitHub stars and 7.570 downloads on Packagist (latest version v1.0.4).
Install it with composer require internetcode/laravel-user-settings.
Discover more Laravel packages by internetcode
or browse all Laravel packages to compare alternatives.
Last updated
Simple and persistent boolean settings per user.
This package has been developed to help you store simple boolean settings (true/false or yes/no settings) per user.
Laravel user settings only requires 1 additional column (bigint) per entity. All settings are stored in this column as a binary value. By using the bitwise operators in PHP we are able to store multiple settings in a single column without extra coding/decoding or multiple queries.
Searching for enabled settings is supported by MySQL as can be found here.
Get a setting
$user->setting('my_setting');
OR
$user->getSetting('my_setting');
Set a setting
$user->setting('my_setting', true);
OR
$user->setSetting('my_setting', true);
Overriding a list of allowed setting for the entity.
A global list of settings can be found in the user-settings.php config file, if you want to override these settings per model you can override the following method:
/**
* getSettingFields function.
* Get the default possible settings for the user. Can be overwritten
* in the user model.
*
* @return array
*/
public function getSettingFields()
{
return config('user-settings.setting_fields', []);
}
Searching for settings in a query
$user = (new User())->whereSetting('my_setting')->first();
Set multiple settings at once
$user->setMultipleSettings([
'my_setting' => true,
'my_setting_2' => false,
]);
$user->save();
First of all you should require the package using composer:
composer require internetcode/laravel-user-settings
Afterwards you can add the service provider to your providers array. This is optional since it is already auto discovered by Laravel.
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
...
Internetcode\LaravelUserSettings\LaravelUserSettingsServiceProvider::class,
],
Publish the config and migration files.
php artisan vendor:publish --tag=config
php artisan vendor:publish --tag=migrations
Please note that the newly created migration file defaults to a settings column on the user model. Feel free to change that, or add multiple tables.
On the models where you want to use the settings add the HasSettingsTrait trait.
<?php
namespace Internetcode\LaravelUserSettings\Tests;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Internetcode\LaravelUserSettings\Traits\HasSettingsTrait;
class User extends Authenticatable
{
use HasSettingsTrait;
setting_fields array. Every field in here is converted based on the index of the field. Therefore changing the order/index of your setting, will result in invalid settings being true or false.Please create an issue using the issue tracker or drop us an email.
MIT © Zander van der Meer