【问题标题】:Laravel - specify fields returned for collection resourceLaravel - 指定为集合资源返回的字段
【发布时间】:2021-02-25 13:21:06
【问题描述】:

我有一个这样的收藏资源:

class VehicleCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'data' => $this->collection,
        ];
    }
}

我称之为,例如:

    public function index()
    {
        $vehicles = Vehicle::where('id', '>', 0);

        $collection = new VehicleCollection($vehicles->paginate(10));

        return $collection->preserveQuery();
    }

保留分页查询很重要,这就是我没有使用VechicleResource 的原因 - 它没有preserveQuery() 的选项。

以上工作正常,但返回的字段太多。例如我的Vehicle 表有一个model_name 和一个rating 列。如何在此处的响应中只为每个模型返回 model_name(或指定我返回的字段)?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以使用返回AnonymousResourceCollectionVechicleResource::collection()AnonymousResourceCollection 扩展ResourceCollection,因此您可以调用preserveQuery()。然后您可以在VechicleResource 中选择/指定要发送的字段。

    public function toArray($request)
    {
        return [
            'data' => VechicleResource::collection($this->collection),
        ];
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-09
      • 2022-07-26
      • 2021-11-03
      • 1970-01-01
      • 2018-07-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      相关资源
      最近更新 更多