internetcode / laravel-user-settings
此包最新版本(v1.0.4)没有提供许可证信息。
按用户轻松设置布尔值
v1.0.4
2018-07-17 05:24 UTC
Requires (Dev)
- orchestra/testbench: ^3.6
- phpunit/phpunit: ^7.2
README
为每个用户简单且持久地设置布尔值。
此包旨在帮助您为每个用户存储简单的布尔值设置(true/false或yes/no设置)。
特性
- 仅需要额外的1列来存储多个设置。
- 设置以二进制形式存储。
- 适用于所有模型。
- 可定制。
- 快速。
背景
Laravel用户设置只需要为每个实体额外1列(bigint)。所有设置都存储在此列中,以二进制值形式存在。通过在PHP中使用位运算符,我们能够在不进行额外编码/解码或多个查询的情况下,在单列中存储多个设置。
MySQL支持通过位函数搜索启用设置,详情请见此处。
使用方法
获取设置
$user->setting('my_setting');
或者
$user->getSetting('my_setting');
设置设置
$user->setting('my_setting', true);
或者
$user->setSetting('my_setting', true);
覆盖实体允许的设置列表。全局设置列表可以在user-settings.php
配置文件中找到,如果您想为模型覆盖这些设置,可以覆盖以下方法
/** * 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', []); }
在查询中搜索设置
$user = (new User())->whereSetting('my_setting')->first();
一次设置多个设置
$user->setMultipleSettings([ 'my_setting' => true, 'my_setting_2' => false, ]); $user->save();
安装
首先,您应该使用composer要求包
composer require internetcode/laravel-user-settings
之后,您可以将服务提供者添加到您的提供者数组中。这是可选的,因为它已经被Laravel自动发现。
'providers' => [ /* * Laravel Framework Service Providers... */ Illuminate\Auth\AuthServiceProvider::class, ... Internetcode\LaravelUserSettings\LaravelUserSettingsServiceProvider::class, ],
发布配置和迁移文件。
php artisan vendor:publish --tag=config
php artisan vendor:publish --tag=migrations
请注意,新创建的迁移文件默认在用户模型上创建一个settings
列。您可以根据需要更改此列,或者添加多个表。
在您想使用设置的模型上添加HasSettingsTrait
特性。
<?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
数组中设置的顺序。这里的每个字段都是根据字段的索引进行转换的。因此,更改设置顺序/索引将导致设置无效,真或假。
错误/问题/想法
请使用问题跟踪器创建问题,或者给我们发送电子邮件。
许可证
MIT © Zander van der Meer