在Eloquent中将相同的访问者应用于多个属性

时间:2016-04-21 15:02:58

标签: php laravel eloquent

在雄辩中,我们可以通过指定数组中的日期将多个属性强制转换为Carbon实例:

  File "AccessADData.py", line 49, in <module>
  File "active_directory.pyc", line 105, in <module>
ImportError: cannot import name adsi

我有多个属性,我想应用相同的表示逻辑,而不是使用多个访问器(每个属性一个方法),我想知道是否有可能设置一个像前面提到的日期数组的数组特定方法可以应用于。

所以不要使用多个访问器,如下所示:

protected $dates = ['created_at', 'updated_at', 'deleted_at'];

我可以改为使用这样的数组:

public function getFirstNameAttribute($value)
{
    return ucfirst($value);
}

public function getLastNameAttribute($value)
{
    return ucfirst($value);
}

然后通过创建执行此操作的方法将protected $ucfirst = ['first_name', 'last_name']; 函数应用于数组。

在文档中没有看到这个并且无法从搜索中找到任何内容,但我可能一直在寻找错误的内容。

任何只使用雄辩的解决方案都会很棒,如果我能避免的话,我真的不想拉另一个包来做这件事。谢谢!

修改

要研究碳ucfirst()如何运作并尝试类似的方法,也许这是一个起点:

https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L2895

1 个答案:

答案 0 :(得分:0)

我不知道这种可能性。

但您可以将重复功能封装到某些方法中,并在您的访问器中使用此方法。