Laravel雄辩模型中的多重变异子

Laravel雄辩模型中的多重变异子,laravel,eloquent,Laravel,Eloquent,为了在一个雄辩的模型类中定义一个Mutator,我们使用getFooAttribute,如: public function getTitleAttribute($value) { return ucfirst($value); } 但是假设我在一个模型中有很多(20到30个)属性需要重命名,为每个属性创建一个函数是很麻烦的,有没有更聪明的方法来解决这个问题?您可以覆盖模型上的函数,并在其中有一个关联数组来重命名属性 public function getAttribute($key)

为了在一个雄辩的模型类中定义一个Mutator,我们使用getFooAttribute,如:

public function getTitleAttribute($value)
{
    return ucfirst($value);
}
但是假设我在一个模型中有很多(20到30个)属性需要重命名,为每个属性创建一个函数是很麻烦的,有没有更聪明的方法来解决这个问题?

您可以覆盖模型上的函数,并在其中有一个关联数组来重命名属性

public function getAttribute($key)
{
    $renames = [
        'foo' => 'bar',
    ];

    if (array_key_exists($key, $renames))
        $key = $renames[$key];

    return parent::getAttribute($key);
}

如果您有20-30个要重命名的属性,那么您可能需要后退一步,查看表结构、数据类型以及如何使用数据库;我通过使用资源解决了我的问题,并将您的解决方案作为答案与大家分享。这听起来像是可以帮助别人的事情。