softcomtecnologia/custom-accessor-and-mutator

设置Laravel模型属性(访问器和修改器)而无需创建方法

v2.0.2 2021-09-24 18:16 UTC

This package is not auto-updated.

Last update: 2024-09-21 09:20:17 UTC


README

#自定义访问器和修改器

自定义访问器和修改器

CustomAccessorsAndMutators 是一个用于优化Laravel访问器和修改器创建的包。重点是通过一个数组来设置访问器和修改器,其中属性作为键,方法作为值。

CustomAccessorsAndMutators 是一个用于优化Laravel访问器和修改器创建的包。重点是通过一个数组来设置访问器和修改器,其中属性作为键,方法作为值。

安装

安装

Composer

如果您已经使用Composer(强烈推荐),请在您的 composer.json 文件下的 "require" 指令中添加依赖。

如果您已经使用Composer(强烈推荐),请在您的 composer.json 文件下的 "require" 指令中添加依赖。

    require : {
            "laravel/framework": "5.1.*",
            "igorwanbarros/custom-accessor-and-mutator": "v1.*"
        }

用法

用法

该包使用 CustomAccessorsAndMutators 特性来设置属性,只需将其添加到类中,如下所示

该包使用 CustomAccessorsAndMutators 特性来设置属性,只需将其添加到类中,如下所示

use Illuminate\Database\Eloquent\Model;
use Igorwanbarros\CustomAccessorAndMutator\CustomAccessorsAndMutators;

class Order extends Model
{
    use CustomAccessorsAndMutators;
    
    protected $table = 'order';
    
    protected $customAccessors = [
        //attribute name you model   => your default method for treating this type of data
        'you_attribute_name'         => '_yourMethodGet',
        'you_other_attribute_name'   => '_yourMethodGet',
    ];
    
    protected $customMutators = [
        'you_atribute_name'         => '_yourMethodGet',
        'you_other_atribute_name'   => '_yourMethodGet',
    ];
    
    
    protected function _youtMethodGet($value)
    {
        //you logic here
        return $value;
    }
    
    
    protected function _youtMethodSet($value)
    {
        //you logic here
        return $value;
    }
}

或者在您的模型基类中

或者在您的模型基类中

class ModelBase extends Model 
{
    use CustomAccessorsAndMutators
}

在其他模型中,只需添加字段及其对应的方法

在其他模型中,只需添加字段及其对应的方法

class Order extends Model
{
    protected $table = 'order';
    
    protected $customAccessors = [
        'you_attribute_name'    => '_yourMethodGet',
    ];
    
    protected $customMutators = [
        'you_attribute_name'    => '_yourMethodGet',
    ];
    
    
    protected function _youtMethodGet($value)
    {
        //you logic here
        return $value;
    }
    
    
    protected function _youtMethodSet($value)
    {
        //you logic here
        return $value;
    }
}

通过类添加

通过类添加

您还可以实现 FormatAccessorsAndMutator 类来定义您的格式化逻辑(例如,对于某些类型的数据)并按如下所示进行说明

您还可以实现 FormatAccessorsAndMutator 类来定义您的格式化逻辑(例如,对于某些类型的数据)并按如下所示进行说明

namespace App\FormatAccessorsAndMutators;

use Igorwanbarros\CustomAccessorAndMutator\FormatAccessorAndMutator;

class MoneyFormatAccessorsAndMutators implements FormatAccessorAndMutator
{
    public static function get($value)
    {
        //you logic here
        return $value;
    }
    
    
    public static function set($value)
    {
        //you logic here
        return $value;
    }
}

在其模型类中,您可以如下设置

在其模型类中,您可以如下设置

use Illuminate\Database\Eloquent\Model;
use Igorwanbarros\CustomAccessorAndMutator\CustomAccessorsAndMutators;
use App\FormatAccessorsAndMutators\MoneyFormatAccessorsAndMutators;

class Order extends Model
{
    use CustomAccessorsAndMutators;
    
    protected $table = 'order';
    
    protected $customAccessors = [
        'you_attribute_name'         => MoneyFormatAccessorsAndMutators::class,
        'you_other_attribute_name'   => MoneyFormatAccessorsAndMutators::class,
    ];
    
    protected $customMutators = [
        'you_atribute_name'         => MoneyFormatAccessorsAndMutators::class,
        'you_other_atribute_name'   => MoneyFormatAccessorsAndMutators::class,
    ];
    
}

许可证

MIT 许可证