vkovic / laravel-meta
用于不同目的的Laravel元数据存储
v0.3.0
2019-10-15 18:00 UTC
Requires
- php: ^7.1
Requires (Dev)
- laravel/laravel: ^5.5|^6.0
- orchestra/database: ^3.5|^4.0
- orchestra/testbench: ^3.5|^4.0
- phpunit/phpunit: ^6.3|^7.0|^8.0
README
用于不同目的的Laravel数据库元数据存储
这是一个简单的包,用于在专用表中轻松存储和检索应用程序中所有类型的元数据(不同数据类型)。
兼容性
该包与Laravel版本5.5
、5.6
、5.7
、5.8
和6
兼容
安装
通过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包,您应该运行它附带的测试。最简单的方法是使用Docker
、docker-compose
和phpunit
。
首先,我们需要初始化Docker容器
docker-compose up -d
然后,我们可以运行测试并查看输出
docker-compose exec app vendor/bin/phpunit
类似包
该包是三种基于相同方法的元数据包之一
- vkovic/laravel-meta(此包 - 通用元数据存储)
- vkovic/laravel-model-meta(与Laravel模型相关的元数据存储)
- vkovic/laravel-settings(应用程序特定设置的元数据存储)
这些包可以单独使用,也可以一起使用。它们内部使用相同的表并共享公共逻辑。