从laravel中的访问者返回原始值和新值

时间:2015-01-07 00:48:18

标签: php laravel laravel-4

我正在考虑在我的一个模型上使用访问器来“美化”一个名字。是否可以使用访问器返回字段的漂亮和原始版本?如果访问者不适合这样做,怎么可能这样做。

代码:

型号:

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"
}

我不是在询问如何大写这些字母(我知道怎么做),我问的是如何返回一个包含漂亮名字的新字段。

2 个答案:

答案 0 :(得分:1)

class Application extends \Eloquent {

    protected $appends = ['prettyname'];

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

        // some code to prettify $name

        return $name;
    }

}

答案 1 :(得分:0)

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

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

在您的视图中

将如下所示

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