Laravel 5.5 API资源用于集合(独立数据)
Laravel 5.5 API资源用于集合(独立数据)
我想知道是否可以为项目资源和集合资源定义不同的数据。对于集合资源,我只想发送['id', 'title', 'slug']
,但是项目资源将包含额外的细节['id', 'title', 'slug', 'user',等等]
。
我想要实现类似于:
class PageResource extends Resource { /** * 将资源转换为数组。 * * @param \Illuminate\Http\Request * @return array */ public function toArray($request) { return [ 'id' => $this->id, 'title' => $this->title, 'slug' => $this->slug, 'user' => [ 'id' => $this->user->id, 'name' => $this->user->name, 'email' => $this->user->email, ], ]; } } class PageResourceCollection extends ResourceCollection { /** * 将资源集合转换为数组。 * * @param \Illuminate\Http\Request * @return array */ public function toArray($request) { return [ 'id' => $this->id, 'title' => $this->title, 'slug' => $this->slug, ]; } }
PageResourceCollection将无法按预期工作,因为它使用了PageResource,所以需要:
return [ 'data' => $this->collection, ];
我可以将资源复制为PageFullResource
/ PageListResource
和PageFullResourceCollection
/ PageListResourceCollection
,但我正在寻找更好的方法来实现相同的结果。