Laravel 5.5 API资源用于集合(独立数据)

12 浏览
0 Comments

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 / PageListResourcePageFullResourceCollection / PageListResourceCollection,但我正在寻找更好的方法来实现相同的结果。

0