twowju5/smart-meta-manager

为 Laravel/middey 技术提供的简单智能元数据管理

v1.1.0 2024-09-28 14:49 UTC

This package is auto-updated.

Last update: 2024-09-28 15:29:48 UTC


README

Nellalink SmartMetaManager 是一个强大的 Laravel 扩展包,旨在简化模型元数据的管理。它提供了一种灵活高效的方法来关联模型实例的额外信息,允许在不更改数据库模式的情况下动态和可扩展地存储数据。

Latest Version on Packagist Total Downloads GitHub Actions

目录

安装

您可以通过 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 来管理元数据。

设置

  1. 在模型文件顶部导入 MetaDataTrait
use Towoju5\SmartMetaManager\Trait\MetaDataTrait;
  1. 在模型中使用特性
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)。有关更多信息,请参阅许可文件