Laravel-如何更改特定字段的响应格式
我有“产品”模型。 并且只需要为响应更改一些值格式 比如,Laravel-如何更改特定字段的响应格式,laravel,model,Laravel,Model,我有“产品”模型。 并且只需要为响应更改一些值格式 比如, I've "price" on database as decimal (11,2). I want this as "1.000.000,00" format on response. 或者在字段中创建到“Carbon::parse($this->created_at)->toDayDatetimeString()” 或者,我想在响应时添加3个具有我的用户属性的特定列。(是否允许等) 如何在模
I've "price" on database as decimal (11,2).
I want this as "1.000.000,00" format on response.
或者在字段中创建到“Carbon::parse($this->created_at)->toDayDatetimeString()”
或者,我想在响应时添加3个具有我的用户属性的特定列。(是否允许等)
如何在模型上实现这一点?
我如何才能做出这样的响应?您可以使用Mutator和Accessor设置格式:
作为Laravel的最佳实践,您可以使用雄辩的资源: 它基本上是模型数据和API/响应输出之间的“转换器”。 唯一需要注意的是,在资源文件中,您必须手动指定模型的所有字段和关系(如果需要) 在
toArray()
函数中,您可以根据需要修改模型的所有数据类型。
如果没有,您可以通过$model->my_custom_field
访问新字段(Laravel可以自动解析getter函数的名称)
如果要在模型中执行此操作,可以创建自定义字段:
class MuModel extends Model
{
protected $appends = ['my_custom_field'];
public function getMyCustomFiledAttribute(){
$newData = doSomething($this->existent_field);
return $newData;
}
}
$appends
变量将新字段作为普通数据库字段添加到从模型生成的所有响应中
注意:您可以为现有数据库属性创建一个getAttribute()函数,并根据需要返回值
例如:
getCreateDataAttribute()
很抱歉,此方法不会格式化/更改现有属性的值,而是生成具有新值的新属性。同时也要注意不要放置重复的属性,否则它将返回错误。
public function toArray($request)
{
$editedFieldValue = doSomething();
return [
'my_field' => $editedFieldValue,
'other_field' => '',
];
}
class MuModel extends Model
{
protected $appends = ['my_custom_field'];
public function getMyCustomFiledAttribute(){
$newData = doSomething($this->existent_field);
return $newData;
}
}