从 voyager Translatable 隐藏字段

Hide fields from voyager Translatable

我想在 json 响应中隐藏一些字段。 我使用了 Voyager 多语言功能。所以我的回复如下所示:

$collection = Diet::all()->makeHidden(['description'])->translate(app()->getLocale(), 'en');
return response()->json($collection);

但描述字段包含在响应中。它在没有 ->translate(app()->getLocale(), 'en') 的情况下工作完美。如何隐藏描述字段?

为了隐藏这些字段,我创建了 JsonResource,如下所示:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class DietCollection extends JsonResource
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    { 
        //here we return only required fields
        return [
            'id' => $this->id,
            'title' => $this->title,
            'image' => $this->image,
        ];
    }
}

并像这样使用它:

$collection = Diet::all()->translate(app()->getLocale(), 'en');
return response()->json(DietCollection::collection($collection));