paulehenri-l/laravel-dynamic-attributes

动态添加属性到您的Eloquent模型

3.0.0 2020-10-27 21:33 UTC

This package is auto-updated.

Last update: 2024-09-28 06:00:45 UTC


README

Tests License: MIT

允许您在运行时动态添加属性到Eloquent模型。

安装

composer require paulhenri-l/laravel-dynamic-attributes

使用

首先,您需要将 HasDynamicAttributesTrait 添加到您的模型中。

class Member extends Illuminate\Database\Eloquent\Model
{
    use PaulhenriL\LaravelDynamicAttributes\HasDynamicAttributes;
}

然后,您可以从构造函数或其他将在运行时调用的位置注册动态字段。

一个好的位置是从特性(trait)的初始化方法。

class Member extends Illuminate\Database\Eloquent\Model
{
    use PaulhenriL\LaravelDynamicAttributes\HasDynamicAttributes;

    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);

        $this->registerDynamicAttribute(
            'my_dynamic_attribute',
            function ($key) {
                return "Trying to get {$key}";
            },
            function ($key, $value) {
                echo "Setting {$key}";
            }
        );
    }
}

现在您可以为动态属性设置和获取值

$member = new Member();
$member->my_dynamic_attribute = 'Hello';
$member->my_dynamuc_attribute;

贡献

如果您对这个库的使用有任何疑问,请随时提出问题。

如果您认为文档或代码可以有任何改进,请提交PR,我会很乐意审查!