-1

我想在 Collection API Resource 中隐藏一个属性,我不想总是这样做,所以我需要makeHidden()在我想要的时候做一些事情。

Illuminate\Support\Collection但是没有makeHidden()方法 Eloquent 集合类的API 资源返回实例是Illuminate\Database\Eloquent\Collection

我怎样才能做到这一点 ?

4

1 回答 1

1

如果您想为某些情况自定义响应,您可以创建第二个 Resource 类,它只包含您想要的属性:

class FirstResource extends JsonResource {

    public function toArray($request)
    {
        return [
            'first_value' => $this->first_value,
            'second_value' => $this->second_value,
            'third_value' => $this->third_value,
            'fourth_value' => $this->fourth_value,
        ];
    }
}
class SecondResource extends JsonResource {

    public function toArray($request)
    {
        return [
            'first_value' => $this->first_value,
            'second_value' => $this->second_value,
        ];
    }
}

然后在需要其中之一时使用它们:

public function aControllerMethod()
{
    $model = MyModel::find($id);

    return new FirstResource($model);
}
public function anotherControllerMethod()
{
    $model = MyModel::find($id);

    return new SecondResource($model);
}

现在,您将获得来自同一模型(或集合)的两个不同响应。

于 2019-12-09T18:06:48.847 回答