我的帖子模型具有以下格式:
{
"id": 1,
"title": "Post Title",
"type: "sample"
}
这是我的控制器方法:
public function show($id) {
$post = App\Post::find($id);
$transformedPost = new PostResource($post);
return $transformedPost;
}
这是我的PostResource的外观:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->title,
'type' => $this->convertType($this->type),
];
}
public function convertType($type)
{
return ucfirst($type);
}
所以在show / 1响应中,我应该得到:
{
"id": 1,
"name": "Post Title",
"type: "Sample"
}
相反,我得到了:
{
"id": 1,
"title": "Post Title",
"type: "sample"
}
因此,我的PostResource显然无法按预期工作。键“ title”没有被键“ name”代替。
我在这里想念什么?我知道这篇文章可能会重复,但其他问题的解决方案似乎对我不起作用。
我正在使用Laravel 6.x。
答案 0 :(得分:1)
//I'm trusting you want to use an Accessor.
//In your Post Model, try something like this
public function getTypeAttribute($value)
{
return ucfirst($value);
}
您的PostResource现在应该是
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->title,
'type' => $this->type
];
}
答案 1 :(得分:0)
短路;
PostResource;
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->title,
'type' => ucfirst($this->type)
];
}