[英]Laravel - specify fields returned for collection resource
我有一個這樣的收藏資源:
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
的模型名稱(或指定我返回的字段)?
您可以使用返回AnonymousResourceCollection
和AnonymousResourceCollection
的VechicleResource::collection()
擴展ResourceCollection
,因此您可以調用preserveQuery()
。 然后您可以在VechicleResource
中選擇/指定要發送的字段。
public function toArray($request)
{
return [
'data' => VechicleResource::collection($this->collection),
];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.