nguyentranchung / laravel-metable
为 Eloquent 模型提供流畅的元数据,就像它是模型上的一个属性。
dev-master
2018-11-19 14:07 UTC
Requires
- php: >=7.0.0
- illuminate/support: >=5.0
This package is auto-updated.
Last update: 2024-09-20 03:13:07 UTC
README
Metable 特性可以添加将元数据作为模型属性访问的能力。Metable 是流畅的,就像使用 eloquent 模型属性一样,你可以设置或删除元数据。遵循文档了解详细信息。
安装
Composer
composer require nguyentranchung/laravel-metable
迁移
php artisan vendor:publish --provider=NguyenTranChung\Metable\MetableServiceProvider --tag=migrations
配置
php artisan vendor:publish --provider=NguyenTranChung\Metable\MetableServiceProvider --tag=config
模型设置
use NguyenTranChung\Metable\Metable\Metable; use NguyenTranChung\Metable\Metable\MetableTrait; class Post extends Model implements Metable { // ... use MetableTrait; }
用法
添加元数据
$post = Post::first(); // add single meta $post->setMeta('key0', 'value0'); $post->setMeta('key1', 'value1'); // add multi metas $post->setMeta([ 'key2' => 'value2', 'key3' => 'value3', 'key4' => 'value4', ]); // auto save meta $post->save(); // or $post->updateOrCreateMetas();
删除元数据
// unset single meta key $post->unsetMeta('key0'); // unset multi meta key $post->unsetMeta(['key1', 'key2', 'key3']); // auto save change meta $post->save(); // or $post->deleteMetas(); // Delete all metas $post->deleteAllMetas();
获取元数据
// get all metas $post->getMeta(); // get meta with key $post->getMeta('key1'); // get multi meta with keys $post->getMeta(['key1', 'key2', 'key3']); // Get value of key, only string key input $post->getMetaValue('key1');
预加载
当你需要从模型检索多个结果时,你可以预加载 metas
$post = Post::with(['metas'])->get();