jessegall / metadata
此包已被废弃,不再维护。未建议替代包。
一个允许优雅模型存储元数据的包
此包尚未发布版本,可用的信息不多。
README
一个允许优雅模型存储元数据的包
安装
使用composer
composer require jessegall/metadata
或手动修改composer.json文件
{
"require": {
"jessegall/metadata": "^1.0"
}
}
运行composer install
将服务提供者添加到config/app.php
'providers' => [ // ... \JesseGall\Metadata\Providers\MetadataServiceProvider::class, ]
运行以下命令以发布配置文件
php artisan vendor:publish --provider="JesseGall\Metadata\Providers\MetadataServiceProvider"
配置位于配置文件夹中的配置文件(metadata.php)
return [ /** * Set to true if you use uuids for your models */ 'uuid' => false, ];
运行迁移命令:php artisan:migrate
使用方法
现在您可以将HasMetaData特性添加到任何优雅模型中。
class Example extends Model { use HasMetadata; ... }
您可以存储所有原始数据类型作为值。使用点符号表示嵌套数据。当模型被保存时,元数据将被自动保存
$example = new Example(); $example->setMetadata('string', 'a string'); $example->setMetadata('array', ['key' => 'value']); $example->setMetadata('int', 1); $example->setMetadata('float', 1.1); $example->setMetadata('nested.one', 'hello'); $example->setMetadata('nested.two', 'bye'); $example->setMetadata('nested.three', ['key' => 'value']); $example->save(); // Don't forget to save the model
要从模型检索元数据
$example->getMetadata('string'); // 'a string' $example->getMetadata('array'); // ['key' => 'value'] $example->getMetadata('int'); // 1 $example->getMetadata('float'); // 1.1 $example->getMetadata('nested.one'); // 'hello' $example->getMetadata('nested.two'); // 'bye' $example->getMetadata('nested.three'); // ['key' => 'value'] $example->getMetadata('nested.three.key'); // 'value' $example->getMetadata('nested'); // ['one' => 'hello', 'two' => 'bye, 'three' => ['key' => 'value']]
如果您希望在调用toArray方法时模型附加元数据,请将'metadata'添加到appends数组中
class Example extends Model { use HasMetadata; protected $appends = [ 'metadata', ... ]; ... }