belyaevad/laravel-meta

v1.0.1 2021-06-18 14:50 UTC

This package is auto-updated.

Last update: 2024-09-18 22:05:51 UTC


README

Latest Version on Packagist Total Downloads Software License

为您的 Eloquent 模型提供元数据(WordPress 类比)。

创建此包的想法借鉴自 WordPress CMS,其中每个在 wp_posts 表中的条目都可以拥有任意数量的附加字段。

存储和接收数据的方法是在 morphTo 关系中实现的。所有元数据都存储在单独的表中,并通过特质与您的模型连接。默认情况下,元数据不会与模型一起加载,但可以通过将 meta 添加到自动加载关系来修复此问题

protected $ with = [
    // ...
    // other relationships
    'meta',
];

或在集合中加载

$postList = Post::where('active', true)->with('meta')->get();

读取元数据的任何操作都会加载与您的模型关联的所有元字段,这可以节省您许多 SQL 查询。

如果您需要重新加载元数据,请使用 $post->metaReLoad() 方法。

安装

您可以通过 composer 安装此包

composer require belyaevad/laravel-meta

发布、迁移

在您的项目中运行 php artisan vendor:publish --provider="BelyaevAD\Meta\MetaServiceProvider" 将发布此包的所有文件。对于此包,它只是一个迁移。运行 php artisan migrate 以迁移表。现在您的数据库中将有一个名为 metas 的表。

用法

您可以将元数据轻松添加到 Eloquent 模型中。只需将以下内容添加到您的模型中

use BelyaevAD\Meta\Metable;

class Post extends Model
{
    use Metable;
}

然后您就可以获取、添加、更新和删除模型中的元数据。

$post = Post::find(1);

$post->addMeta('someKey', 'someValue');

$post->getMeta('someKey');

$post->getMetaValue('someKey');

$post->hasMeta('someKey');

$post->updateMeta('someKey', 'anotherValue');

$post->addOrUpdateMeta('someKey', 'someValue');

$post->deleteMeta('someKey');

$post->getAllMeta();

$post->deleteAllMeta();

$post->metaReLoad();

测试

$ composer test

贡献

欢迎贡献,感谢大家的贡献:感谢大家 :)

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。