如何在Laravel中使用具有不同属性的相同Resource
?
假设我有一个User
和一个Post
模型。在PostResource
中,我还使用了UserResource
:
public function toArray($request)
{
return [
'id' => $this->id,
'body' => $this->body,
'created_at' => $this->created_at,
'image' => $this->image_url,
'intro' => $this->intro,
'slug' => $this->slug,
'title' => $this->title,
'user' => new UserResource($this->user),
];
}
这里,UserResource只需要返回几个属性,例如:
return [
'country' => $this->country,
'image' => $this->image_url,
'username' => $this->username,
];
但是在另一个场景中使用UserResource
时,例如个人资料,我需要更多关于用户的信息。我可以创建一个UserProfileResource
,但这对我来说似乎不对。
那么,通常的做法/最佳解决方案是什么?
答案 0 :(得分:1)
我可以创建一个UserProfileResource,但这对我来说似乎不对。
是的,您“应该”为需要/想要的不同响应创建不同的资源。这些资源类别“便宜”,所以不要害怕根据需要制作。