使用与Laravel不同详细程度的相同资源

时间:2018-01-24 15:17:19

标签: laravel

如何在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,但这对我来说似乎不对。

那么,通常的做法/最佳解决方案是什么?

1 个答案:

答案 0 :(得分:1)

  

我可以创建一个UserProfileResource,但这对我来说似乎不对。

是的,您“应该”为需要/想要的不同响应创建不同的资源。这些资源类别“便宜”,所以不要害怕根据需要制作。