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();
我正在考虑在我的一个模型上使用访问器 "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();