2015-01-07 40 views
0

我正在考慮在我的模型之一上使用訪問器來「美化」名稱。是否有可能使用訪問器返回字段的漂亮和原始版本?如果一個訪問者不適合這個,那怎麼可能呢?從laravel中的訪問器返回原始值和新值

代碼:

型號:

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

我不是問阿布如何將這些字母大寫(我知道如何做到這一點),我在問如何返回一個包含漂亮名字的新字段。

回答

1
class Application extends \Eloquent { 

    protected $appends = ['prettyname']; 

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

     // some code to prettify $name 

     return $name; 
    } 

} 
0

另一個更乾淨的方法是使用Presenter。 你是模特,不應該真正知道如何向用戶顯示名字。以及着眼於控制器或視圖代碼這看起來像你的模型應該存儲在數據庫的可設置現場prettyName ...

您可以在您的視圖中提取此功能演示Laracasts/Presenter

會看起來如下

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