toanld/laravel-settings

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

1.0.9 2020-09-14 01:17 UTC

This package is auto-updated.

Last update: 2024-09-14 10:13:08 UTC


README

Latest Version on Packagist Software License Build Status StyleCI Total Downloads

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

所有保存到数据库中的设置都进行缓存,以提高性能,减少SQL查询到零。

安装

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

$ composer require toanld/laravel-settings

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

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

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

Lumen通过将其添加到bootstrap/app.php的providers数组中,并将Facade添加到aliases数组中来注册Service Provider。

$app = new Laravel\Lumen\Application(
    dirname(__DIR__)
);
$app->instance('path.config', app()->basePath() . DIRECTORY_SEPARATOR . 'config');
$app->instance('path.storage', app()->basePath() . DIRECTORY_SEPARATOR . 'storage');
$app->register(QCod\Settings\SettingsServiceProvider::class);
if (!class_exists('Settings')) {
    class_alias('QCod\Settings\Facade', 'Settings');
}

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

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

可选:通过运行来发布迁移

php artisan vendor:publish --provider="QCod\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' => 'QCode',
   'app_email' => 'info@email.com',
   'app_type' => 'SaaS'
]);

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

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

分组

v 1.0.6开始,您可以按组组织设置。如果您跳过组名,则将设置存储为default组名。

如果您是从旧版本更新,请务必运行迁移

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

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

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

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

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

测试

该包包含一些集成/冒烟测试,使用Orchestra设置。可以通过phpunit运行测试。

$ composer test

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何安全相关的问题,请通过电子邮件saquibweb@gmail.com联系,而不是使用问题跟踪器。

鸣谢

关于QCode.in

QCode.in (https://www.qcode.in)是Saqueib的博客,涵盖全栈Web开发的所有内容。

许可

MIT许可证(MIT)。有关更多信息,请参阅许可文件