internetcode/laravel-user-settings

此包最新版本(v1.0.4)没有提供许可证信息。

按用户轻松设置布尔值

v1.0.4 2018-07-17 05:24 UTC

This package is auto-updated.

Last update: 2024-08-29 05:06:11 UTC


README

为每个用户简单且持久地设置布尔值。

Build Status MIT Licence PRs Welcome

此包旨在帮助您为每个用户存储简单的布尔值设置(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