如何使用集合中的资源自定义 api
How to customize api with resource on collection
我的控制器上有一个集合,如下所示:
$data = Accommodation::with(['city','accommodationRoomsLimited.roomPricingHistorySearch' => function($query) use($from_date,$to_date){
$query->whereDate('from_date', '<=', $from_date);
$query->whereDate('to_date', '>=', $to_date);
}])
->get();
return new FilterResource($data);
这是我的过滤器资源
public function toArray($request)
{
//return parent::toArray($request);
return [
'id' => $this->id,
'costumfields' => 'somecostumfields'
];
}
现在我想自定义我的资源,以便我可以向其中添加一些自定义字段并自定义 api 上的当前字段,但是这段代码给出了以下错误:
"message": "Property [id] does not exist on this collection instance.",
如果您要归还一个集合,它应该是:
return FilterResource::collection($data);
在 Laravel Eloquent get()
函数中 return 是一个集合。
灵魂
- 如果你想return所有的住宿作为一个数组,你需要在资源上调用
collection()
。
return FilterResource::collection($data);
- 如果您想获得一个
Accommodation
,您需要在 Eloquent 查询中调用 first()
。
$accommodation = Accommodation::with([
'city',
'accommodationRoomsLimited.roomPricingHistorySearch' => function($query) use($from_date,$to_date) {
$query->whereDate('from_date', '<=', $from_date);
$query->whereDate('to_date', '>=', $to_date);
}])
->first();
return new FilterResource($accommodation);
我的控制器上有一个集合,如下所示:
$data = Accommodation::with(['city','accommodationRoomsLimited.roomPricingHistorySearch' => function($query) use($from_date,$to_date){
$query->whereDate('from_date', '<=', $from_date);
$query->whereDate('to_date', '>=', $to_date);
}])
->get();
return new FilterResource($data);
这是我的过滤器资源
public function toArray($request)
{
//return parent::toArray($request);
return [
'id' => $this->id,
'costumfields' => 'somecostumfields'
];
}
现在我想自定义我的资源,以便我可以向其中添加一些自定义字段并自定义 api 上的当前字段,但是这段代码给出了以下错误:
"message": "Property [id] does not exist on this collection instance.",
如果您要归还一个集合,它应该是:
return FilterResource::collection($data);
在 Laravel Eloquent get()
函数中 return 是一个集合。
灵魂
- 如果你想return所有的住宿作为一个数组,你需要在资源上调用
collection()
。
return FilterResource::collection($data);
- 如果您想获得一个
Accommodation
,您需要在 Eloquent 查询中调用first()
。
$accommodation = Accommodation::with([
'city',
'accommodationRoomsLimited.roomPricingHistorySearch' => function($query) use($from_date,$to_date) {
$query->whereDate('from_date', '<=', $from_date);
$query->whereDate('to_date', '>=', $to_date);
}])
->first();
return new FilterResource($accommodation);