nguyentranchung/laravel-metable

为 Eloquent 模型提供流畅的元数据,就像它是模型上的一个属性。

dev-master 2018-11-19 14:07 UTC

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();