twowju5 / smart-meta-manager
为 Laravel/middey 技术提供的简单智能元数据管理
Requires
- php: ^7.4|^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-28 15:29:48 UTC
README
Nellalink SmartMetaManager 是一个强大的 Laravel 扩展包,旨在简化模型元数据的管理。它提供了一种灵活高效的方法来关联模型实例的额外信息,允许在不更改数据库模式的情况下动态和可扩展地存储数据。
目录
- 安装
- 配置
- 用法
- MetaDataTrait
- SmartMetaManager 控制器
- API 使用示例
- 错误处理
- 最佳实践
- 性能考虑
- 安全
- 扩展 Nellalink SmartMetaManager
- 故障排除
- 贡献
- 致谢
- 许可
安装
您可以通过 composer 安装此包
composer require towoju5/smart-meta-manager
安装后,发布配置文件
php artisan vendor:publish --tag=smart-meta-manager-config
配置
配置文件 config/meta_models.php
允许您指定哪些模型可以关联元数据并设置身份验证守卫
return [ 'meta_data_models' => [ 'user' => App\Models\User::class, 'product' => App\Models\Product::class, // 根据需要添加更多模型 ], 'auth_guard' => 'api', ];;
用法
模型设置
要启用模型的元数据功能,请使用 MetaDataTrait
use Towoju5\SmartMetaManager\Trait\MetaDataTrait;
class User extends Model
{
use MetaDataTrait;
// ... other model code
}
README 文档介绍了如何从模型中访问特性
在模型中访问特性
本指南解释了如何在模型中使用 MetaDataTrait 来管理元数据。
设置
- 在模型文件顶部导入 MetaDataTrait
use Towoju5\SmartMetaManager\Trait\MetaDataTrait;
- 在模型中使用特性
class YourModel extends Model
{
use MetaDataTrait;
// ...
}
用法
一旦特性包含在模型中,您可以使用以下方法
设置元数据
$model->setMeta('key', 'value');
获取元数据
$value = $model->getMeta('key', 'default_value');
删除元数据
$model->deleteMeta('key');
获取所有元数据
$allMeta = $model->getAllMeta();
搜索元数据
$results = $model->searchMeta('search_term');
检查特定元数据
$exists = $model->hasMetaKeyValue('key', 'value');
示例
$user = User::find(1);
$user->setMeta('preferences', json_encode(['theme' => 'dark']));
$preferences = json_decode($user->getMeta('preferences'), true);
此特性提供了一种灵活的方法,可以在不修改数据库模式的情况下为模型添加元数据。
API 端点
Nellalink SmartMetaManager 提供以下 API 端点
- GET
/api/meta/{model}
- 获取模型的全部元数据 - POST
/api/meta/{model}
- 添加新元数据 - GET
/api/meta/{model}/search
- 搜索元数据 - GET
/api/meta/user/all
- 获取所有用户元数据 - GET
/api/meta/{model}/{key}
- 获取特定元数据 - PUT
/api/meta/{model}/{key}
- 更新特定元数据 - DELETE
/api/meta/{model}/{key}
- 删除特定元数据 - POST
/api/meta/{model}/check
- 检查键值对是否存在
身份验证
所有 API 端点都需要使用在配置文件中指定的守卫进行身份验证。在发出请求之前请确保您已认证。
MetaDataTrait
MetaDataTrait 提供了在模型级别与元数据交互的方法。可用方法包括
metaData()
setMeta($key, $value, $userId)
getMeta($key, $userId, $default = null)
deleteMeta($key, $userId)
getAllMetaForUser($userId)
searchMeta($userId, $search)
hasMetaKeyValue($key, $value, $userId)
SmartMetaManager 控制器
SmartMetaManager 控制器处理元数据操作的 API 请求。控制器方法包括
getModelMeta(Request $request, $model)
getAllUserMeta(Request $request)
searchMeta(Request $request, $model)
setMeta(Request $request, $model)
getMeta(Request $request, $model, $key)
updateMeta(Request $request, $model, $key)
deleteMeta(Request $request, $model, $key)
checkMetaKeyValue(Request $request, $model)
API 使用示例
有关详细API使用示例,包括各种操作的请求和响应,请参阅完整文档。
错误处理
Nellalink SmartMetaManager对所有API端点使用一致的错误响应。常见的错误场景包括无效的模型名称、不存在的键、验证错误和认证失败。
最佳实践
- 为您的元数据使用一致且描述性的键名
- 实现缓存以频繁访问的元数据
- 使用批量操作设置或更新多个元数据值
- 定期清理孤立或过时的元数据
性能考虑
- 确保在元数据表上正确索引
- 使用预加载以避免N+1查询问题
- 对大型数据集的操作实现分块处理
- 考虑使用Laravel的队列系统进行耗时的元数据操作
安全
- 实现适当的授权检查
- 验证和清理输入数据
- 避免将敏感信息作为元数据存储
- 在API端点上实现速率限制
扩展 Nellalink SmartMetaManager
您可以通过添加自定义作用域、利用Laravel的模型事件、实现自定义验证规则和创建自定义中间件来扩展Nellalink SmartMetaManager的功能。
故障排除
有关常见问题和解决方案,请参阅完整文档中的故障排除部分。
贡献
欢迎为Nellalink SmartMetaManager做出贡献!请遵循完整文档中贡献部分概述的步骤。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。