PersonCollection.php

ыло интересно, если можно определить разные данные для ресурса элемента и ресурса коллекции.

Для коллекции я хочу только отправить['id', 'title', 'slug'] но ресурс предмета будет содержать дополнительные детали['id', 'title', 'slug', 'user', etc.]

Я хочу достичь чего-то вроде:

class PageResource extends Resource
{
    /**
     * Transform the resource into an array.
     *
     * @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
{
    /**
     * Transform the resource collection into an array.
     *
     * @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 но я пытаюсь найти лучший способ достичь того же результата.

Ответы на вопрос(3)

Ваш ответ на вопрос