0

我想在资源上创建两个不同的函数,以便我可以获得两个不同的响应。即我希望资源返回没有图像和图像的数据。

public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'area_code' => $this->area_code
        ];
    }


    public function toArrayWithImages($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'area_code' => $this->area_code,
            'image' => $this->image
        ];
    }

这是我尝试过的,但不知道如何指向第二个函数 'toArrayWithImages' 。有人可以解释一下吗?这是我的控制器..

  public function getAllBusinessAreas()
    {
        try {
            $areas = Area::orderBy('id', 'desc')->get();
            return BusinessAreaResource::collection($areas);
        } catch (Exception $e) {
            return sendErrorResponse('Error fetching Business Areas', true, 500);
        }
    }

默认情况下,它会命中 toArray 函数,我想具体说明从控制器命中哪个函数。有可能吗?

4

1 回答 1

0

所以基本上我正在做的是向您的请求添加一个额外的参数,如果无法将额外的参数附加到您的请求中,您也可以使用 Flash 会话变量,以过滤天气,它会转到返回图像或数据的函数没有图像。

public function toArray($request)
    {
        if($request->with_image)
        {
           this::toArrayWithImages($request->except('with_image'));
        }
        else
        {
          this::toArrayWithoutImages($request->except('with_image'));
        }
   }


    public function toArrayWithoutImages($request)
    {
         return [
        'id' => $this->id,
        'name' => $this->name,
        'area_code' => $this->area_code
        ];
    }
    public function toArrayWithImages($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'area_code' => $this->area_code,
            'image' => $this->image
        ];
    }
于 2020-01-28T06:58:41.377 回答