jalallinux/laravel-settings

将键值对存储在数据库中作为设置

1.3.0 2024-05-25 11:00 UTC

This package is auto-updated.

Last update: 2024-09-25 11:40:14 UTC


README

使用 jalallinux/laravel-settings 将键值对设置存储在数据库中。

所有在数据库中保存的设置都会被缓存,以通过减少SQL查询到零来提高性能。

安装

1 - 您可以通过composer安装此包

composer require jalallinux/laravel-settings

2 - 如果您正在安装Laravel 5.4或更低版本,您需要手动注册Service Provider,将其添加到config/app.php的providers数组中,并在aliases数组中添加Facade。

'providers' => [
    //...
    JalalLinuX\Settings\SettingsServiceProvider::class
]

'aliases' => [
    //...
    "Settings" => JalalLinuX\Settings\Facade::class
]

在Laravel 5.5或更高版本中,服务提供程序将自动注册,并且将提供Setting::get('app_name')的facade。

3 - 现在运行迁移命令php artisan migrate以创建设置表。

可选地,您可以通过运行以下命令发布迁移:

php artisan vendor:publish --provider="JalalLinuX\Settings\SettingsServiceProvider" --tag="migrations"

入门指南

您可以使用辅助函数settings('app_name')Settings::get('app_name')来使用laravel设置。

可用方法

// Pass `true` to ignore cached settings
settings()->all($fresh = false);

// Get a single setting
settings()->get($key, $defautl = null);

// Set a single setting
settings()->set($key, $value);

// Set a multiple settings
settings()->set([
   'app_name' => 'JalalLinuXe',
   'app_email' => 'smjjalalzadeh93@gmail.com',
   'app_type' => 'Laravel'
]);

// check for setting key
settings()->has($key);

// remove a setting
settings()->remove($key);

分组

您可以将设置组织到组中。如果您跳过组名,则设置将以default组名存储。

您有所有上述方法可用,只需通过调用->group('group_name')方法设置您的工作组,并链式调用

// My Team App 1
settings()->group('team.1')->set('app_name', 'My Team App');
settings()->group('team.1')->get('app_name');

// My Team App 2
settings()->group('team.2')->set('app_name', 'My Team 2 App');
settings()->group('team.2')->get('app_name');

// You can use facade
\Settings::group('team.1')->get('app_name');

另一个辅助函数

此辅助函数仅用于获取设置

// Fetch team.2 owner_name from cached settings
_settings('team.2', 'owner_name');

// Fetch all settings of group team.2 from cached settings
_settings('team.2');

// Fetch team.2 owner_name and reset setting cache from database
_settings('team.2', 'owner_name', true);