return laravel 中访问器的原始值和新值

return original and new value from accessor in laravel

我正在考虑在我的一个模型上使用访问器 "prettify" 一个名字。是否可以使用访问器 return 字段的漂亮版本和原始版本?如果一个访问者不适合这个,这是怎么做到的。

代码:

型号:

class Application extends \Eloquent {

   protected $guarded = array();
   protected $table = 'apps';

   public function getNameAttribute($value) {
      //some code to prettify         
   }

}

目前我得到这个结果:

{
"id": 1,
"name": "myapp",
}

我想得到的结果如下:

{
"id": 1,
"name": "myapp",
"prettyname": "MyApp"
}

我不是在问如何将字母大写(我知道怎么做),我是在问如何 return 包含漂亮名称的新字段。

class Application extends \Eloquent {

    protected $appends = ['prettyname'];

    public function getPrettynameAttribute()
    {
        $name = $this->attributes['name'];

        // some code to prettify $name

        return $name;
    }

}

另一种更简洁的方法是使用 Presenter。 您的模型不应该真正知道如何向用户显示名称。除了查看控制器或视图代码外,您的模型似乎还有一个存储在数据库中的可设置字段 prettyName...

您可以将此功能提取给演示者Laracasts/Presenter

在您看来,如下所示

$myApp->present()->name();