class Theme
{
public function getNameAttribute()
{
return 'prefix-' . $this->id;
}
}
$theme = Theme::find(1);
dump($theme->name); // "prefix-1"
$array = $theme->toArray();
dump($array) // ["id" => 1]
“名称”属性未出现在数组中,因此我必须添加以下代码(或在$theme->name = ''
之前添加toArray()
):
$array['name'] = $theme->name;
dump($array) // ["id" => 1, "name" => "prefix-1"]
return $array;
还有其他方法可以更优雅地做到这一点吗?
答案 0 :(得分:3)
将属性添加到模型上的$appends
变量中。
class Theme
{
protected $appends = ['name'];
public function getNameAttribute()
{
return 'prefix-' . $this->id;
}
}
更多信息:https://laravel.com/docs/5.7/eloquent-serialization#appending-values-to-json