belyaevad / laravel-meta
模型元数据
v1.0.1
2021-06-18 14:50 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-09-18 22:05:51 UTC
README
为您的 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)。请参阅 许可文件 了解更多信息。