Php 根据请求传递的内容,在laravel中省略一些关于资源的详细信息
Laravel Api资源: 基本上我有一个与模型相关的资源,但是这个资源在获取时,我也会获得相关的模型资源Php 根据请求传递的内容,在laravel中省略一些关于资源的详细信息,php,laravel,Php,Laravel,Laravel Api资源: 基本上我有一个与模型相关的资源,但是这个资源在获取时,我也会获得相关的模型资源 use Illuminate\Http\Resources\Json\Resource; class ExampleResource extends Resource { public function toArray($request) { return [ "id" => $this->id,
use Illuminate\Http\Resources\Json\Resource;
class ExampleResource extends Resource
{
public function toArray($request)
{
return [
"id" => $this->id,
"user" => new UserResource($this->user),
"total" => number_format($this->getTotal(), 2),
"details" => ExampleDetailsResource::collection($this->details),
];
}
}
因此,我的问题是:
当我获取所有示例时,我也不想获取它们的详细信息
但是当我拿一个例子的时候,我需要这些细节
那么,有没有一种方法可以告诉资源,在获取详细信息时,我不需要这些详细信息
我需要这样做的原因是,一个示例可能有很多细节,因此每当我获取所有示例时,这意味着我也将获取它们的细节,这会减慢我的获取速度。您可以创建ExampleDetailResource和ExampleResource,如果您不需要更多详细信息,请致电ExampleResource,反之亦然。像这样 对于回答中的较少细节
use Illuminate\Http\Resources\Json\Resource;
class ExampleResource extends Resource
{
public function toArray($request)
{
return [
"id" => $this->id,
"user" => new UserResource($this->user),
"total" => number_format($this->getTotal(), 2),
];
}
}
use Illuminate\Http\Resources\Json\Resource;
class ExampleDetailResource extends Resource
{
public function toArray($request)
{
return [
"id" => $this->id,
"user" => new UserResource($this->user),
"total" => number_format($this->getTotal(), 2),
"details" => ExampleDetailsResource::collection($this->details),
];
}
}
如需更多详细信息,请回复:
use Illuminate\Http\Resources\Json\Resource;
class ExampleResource extends Resource
{
public function toArray($request)
{
return [
"id" => $this->id,
"user" => new UserResource($this->user),
"total" => number_format($this->getTotal(), 2),
];
}
}
use Illuminate\Http\Resources\Json\Resource;
class ExampleDetailResource extends Resource
{
public function toArray($request)
{
return [
"id" => $this->id,
"user" => new UserResource($this->user),
"total" => number_format($this->getTotal(), 2),
"details" => ExampleDetailsResource::collection($this->details),
];
}
}
在控制器内部的索引方法中
return response()->json(new ExampleResource($data),200);
在控制器内部的show方法中
return response()->json(new ExampleDetailResource($data),200);