jalallinux / laravel-settings
将键值对存储在数据库中作为设置
1.3.0
2024-05-25 11:00 UTC
Requires
- php: ^7.4|^8.0|^8.2
- laravel/framework: ~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^0.9.4 || ~1.0
- orchestra/testbench: 3.8.*|4.*|5.*
- phpunit/phpunit: ^8.5
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);