larastash / options
基于数据库的Laravel全局键值存储。
Requires
- php: ^8.1
This package is auto-updated.
Last update: 2024-09-18 16:52:55 UTC
README
Options类提供了一个方便的方法与Laravel应用程序中的选项值交互。
它允许您设置、获取、删除和检查选项的存在。该类还包括管理先前检索的选项值的方法,并为选项模型提供查询构建器。
要求
- Laravel ^10(其他版本未测试);
- PHP ^8.1;
为了支持数据库中的JSON字段,请确保您选择的数据库满足以下要求
- MySQL:使用MySQL版本5.7.8或更高版本。从MySQL 5.7.8版本开始引入了JSON字段支持;
- MariaDB:使用MariaDB版本10.2或更高版本。从MariaDB 10.2版本开始引入了JSON字段支持;
- PostgreSQL:使用PostgreSQL版本9.2或更高版本。从PostgreSQL 9.2版本开始引入了JSON字段支持;
- SQLite:使用SQLite版本3.9.0或更高版本。从SQLite 3.9.0版本开始添加了JSON支持和函数;
- SQL Server:使用SQL Server 2016或更高版本。从SQL Server 2016版本开始引入了JSON支持;
- Oracle数据库:使用Oracle数据库12c Release 2(12.2)或更高版本。在Oracle数据库12c Release 2中添加了JSON支持;
安装
您可以使用Composer安装它
composer require larastash/options
运行数据库迁移
php artisan migrate
✨ 开始工作,您完成了!
使用方法
要使用Options类,请确保将其导入到您的PHP文件中
use Larastash\Options\Option;
或从应用容器中获取Larastash\Options\Option单例类
$option = app('option'); $option = app(Option::class);
此外,您还可以使用option()辅助函数。
设置选项
您可以使用set方法设置选项的值
Option::set('key', 'value');
此方法将更新指定键的选项值。如果选项不存在,则创建它。
您还可以指定选项的存活时间(TTL)。TTL确定选项将被缓存的时长。如果指定了TTL,则选项将在数据库持久化之外存储在缓存中
// Set an option with a TTL of 1 hour Option::set('key', 'value', 3600); Option::set('key', 'value', now()->addHour());
获取选项
要检索选项的值,请使用get()方法
$value = Option::get('key');
您还可以指定如果未找到选项则返回的默认值
$value = Option::get('key', 'default');
如果指定了TTL并且选项在缓存中找到,则返回缓存值。否则,将从数据库中检索选项。
// Retrived value will be cached for 1 hour $value = Option::get('key', 'default', 3600); $value = Option::get('key', 'default', now()->addHour());
如果TTL不为null,则从数据库中获取新鲜值,忽略缓存值。
删除选项
您可以使用remove方法删除选项
Option::remove('key');
这将从数据库中删除选项,如果存在,则从缓存中删除它。
检查选项是否存在
您可以使用exists()方法检查选项是否存在
if (Option::exists('key')) { // Option exists } else { // Option does not exist }
exists方法如果指定键的选项存在于数据库中,则返回true;否则,返回false。
获取所有选项值
要检索所有选项值,您可以使用all方法
$options = Option::all();
all方法返回所有选项值的Illuminate\Database\Eloquent\Collection。
查询选项模型
您可以使用query方法访问选项模型的查询构建器
$query = Option::query();
query 方法返回一个 Illuminate\Database\Eloquent\Builder 类的实例,可以用于在选项模型上构建自定义查询。
高级用法
如果您需要更高级的查询功能,可以使用 query() 方法获取选项模型的查询构建器实例。这允许您在选项模型上执行复杂的数据库查询。
$query = Option::query(); $query->where('key', 'like', 'prefix%'); $options = $query->get();
此示例检索所有键以特定前缀开头的选项。
助手函数
option()
option 函数提供了一种方便的方式与 Laravel 应用程序中的选项值交互。它作为 Options 类方法的包装器,简化了选项的检索和设置。
参数
$key(字符串|数组|null):要检索的选项的键,或者包含键和值的数组。如果设置为null,将返回Option类的实例。$default(混合类型):(可选) 如果选项不存在则返回的默认值。此参数仅在检索选项值时使用。$ttl(DateInterval|DateTimeInterface|int|null):(可选) 如果选项不存在则返回的默认值。此参数仅在检索选项值时使用。
返回值
如果提供了键,函数将返回指定键的选项值。
如果提供了数组,则设置指定键的选项值。
如果没有提供任何参数,则返回 Option 类的实例。
用法示例
获取选项
$value = option('key', 'default value'); $value = option('key', 'default value', ttl: 3600); $value = option('key', 'default value', ttl: now()->addHour());
此代码检索指定键的选项值。如果选项不存在,则返回提供的默认值。
设置选项
option(['key' => 'new value']); option(['key' => 'new value'], ttl: 3600); option(['key' => 'new value'], ttl: now()->addHour()); // or as array list option(['key', 'new value']); option(['key', 'new value'], ttl: 3600); option(['key', 'new value'], ttl: now()->addHour());
此代码设置指定键的选项值。如果选项不存在,则将其创建。
访问 Option 类
$option = option(); option()->set(...); option()->get(...); option()->remove(...); option()->exists(...); option()->query(...); // and etc...
此代码返回 Option 类的实例,允许您执行高级操作。
测试
$ composer test
贡献
如果您发现任何问题或有改进建议,请随时通过创建拉取请求或提交问题来贡献。
鸣谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅许可证文件。