vkovic/laravel-meta

用于不同目的的Laravel元数据存储

v0.3.0 2019-10-15 18:00 UTC

This package is auto-updated.

Last update: 2024-09-17 08:45:00 UTC


README

Build Downloads Stable License

用于不同目的的Laravel数据库元数据存储

这是一个简单的包,用于在专用表中轻松存储和检索应用程序中所有类型的元数据(不同数据类型)。

兼容性

该包与Laravel版本5.55.65.75.86兼容

安装

通过composer安装包

composer require vkovic/laravel-meta

运行迁移以创建用于存储元数据的表

php artisan migrate

用法

让我们创建和检索一些元数据

// Set meta value as string
Meta::set('foo', 'bar');

// Get meta value
Meta::get('foo')) // : 'bar'

// In case there is no metadata found for given key,
// we can pass default value to return
Meta::get('baz', 'default'); // : 'default'

可以使用query方法和通配符*检索多个记录

Meta::set('settings.display.resolution', '1280x1024');
Meta::set('settings.display.brightness', 97);
Meta::set('settings.sound.volume', 54);
Meta::set('settings.mic.volume', 0);

Meta::query('settings.display.*');
// Result:
// [
//     'settings.display.resolution' => '1280x1024',
//     'settings.display.brightness' => 97
// ]

Meta::query('*.sound.*');
// Result:
// [
//     'settings.sound.volume' => 54
// ]

Meta::query('settings.*.volume');
// Result:
// [
//     'settings.sound.volume' => 54,
//     'settings.mic.volume' => 0
// ]

// In case there is no metadata found for given query,
// we can pass default value to return
Meta::query('settings.sound.bass', 85); // : 85

除了字符串,元数据还可以存储为整数、浮点数、null、布尔值或数组

Meta::set('age', 35);
Meta::set('temperature', 24.7);
Meta::set('value', null);
Meta::set('employed', true);
Meta::set('fruits', ['orange', 'apple']);

Meta::get('age'); // : 35
Meta::get('temperature'); // : 24.7
Meta::get('value'); // : null
Meta::get('employed'); // : true
Meta::get('fruits'); // : ['orange', 'apple']

我们可以轻松检查元数据是否存在,而无需从元数据表中检索它

Meta::set('foo', 'bar');

Meta::exists('foo'); // : true

计数所有元数据记录也很容易

Meta::set('a', 'one');
Meta::set('b', 'two');

Meta::count(); // : 2

如果我们需要所有元数据或只是键,没问题

Meta::set('a', 'one');
Meta::set('b', 'two');
Meta::set('c', 'three');

// Get all metadata
Meta::all(); // : ['a' => 'one', 'b' => 'two', 'c' => 'three']

// Get only keys
Meta::keys(); // : [0 => 'a', 1 => 'b', 2 => 'c']

此外,我们可以轻松删除元数据

Meta::set('a', 'one');
Meta::set('b', 'two');
Meta::set('c', 'three');

// Remove meta by key
Meta::remove('a');

// Or array of keys
Meta::remove(['b', 'c']);

如果出于某种原因,我们想要一次性删除所有元数据,没问题

// This will delete all metadata from our meta table!
Meta::purge();

如果我们需要访问底层的元数据模型(Laravel Eloquent Model)以进行操作或以无限控制检索数据,我们可以这样获取它

Meta::getModel();

贡献

如果您计划修改此Laravel包,您应该运行它附带的测试。最简单的方法是使用Dockerdocker-composephpunit

首先,我们需要初始化Docker容器

docker-compose up -d

然后,我们可以运行测试并查看输出

docker-compose exec app vendor/bin/phpunit

类似包

该包是三种基于相同方法的元数据包之一

这些包可以单独使用,也可以一起使用。它们内部使用相同的表并共享公共逻辑。