在 Laravel API 资源中隐藏属性
hide attributes in Laravel API Resource
我想在集合中隐藏一个属性 API 资源
我不想总是这样做,所以我需要像 makeHidden()
这样的东西来在我想的时候做。
但是 API 资源 return Illuminate\Support\Collection
没有 makeHidden()
方法的实例
Eloquent 集合 Class 是 Illuminate\Database\Eloquent\Collection
我该怎么做?
如果您想针对某些情况自定义响应,您可以创建第二个资源 class,它只包含您需要的属性:
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);
}
现在您将得到来自同一模型(或集合)的两个不同响应。
我想在集合中隐藏一个属性 API 资源
我不想总是这样做,所以我需要像 makeHidden()
这样的东西来在我想的时候做。
但是 API 资源 return Illuminate\Support\Collection
没有 makeHidden()
方法的实例
Eloquent 集合 Class 是 Illuminate\Database\Eloquent\Collection
我该怎么做?
如果您想针对某些情况自定义响应,您可以创建第二个资源 class,它只包含您需要的属性:
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);
}
现在您将得到来自同一模型(或集合)的两个不同响应。