jessegall/metadata

此包已被废弃,不再维护。未建议替代包。

一个允许优雅模型存储元数据的包

维护者

详细信息

github.com/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',
        ...
    ];
    
    ...
}