Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据请求传递的内容,在laravel中省略一些关于资源的详细信息_Php_Laravel - Fatal编程技术网

Php 根据请求传递的内容,在laravel中省略一些关于资源的详细信息

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,

Laravel Api资源:

基本上我有一个与模型相关的资源,但是这个资源在获取时,我也会获得相关的模型资源

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);