json 资源和资源集合有什么区别?在 Laravel

What is the difference between a json resource & resource collection? in Laravel

谁能解释一下 ResourceCollection 和 JsonResource 之间的区别?

在 Laravel 6 文档中,您可以生成 2 种不同类型的资源...ResourceCollection 和 JsonResource。 https://laravel.com/docs/6.x/eloquent-resources#resource-responses

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class ShopCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

对比...

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class Shop extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

当您将单个模型转换为json时,即为json资源,当您将模型集合转换为json时,即为资源集合。

简单地说,如果您要返回资源集合或作为集合的分页响应。

documentation

to generating resources that transform individual models, you may generate resources that are responsible for transforming collections of models. This allows your response to include links and other meta information that is relevant to an entire collection of a given resource.