Как использовать один и тот же Laravel ресурс для разного ответа API - PullRequest
0 голосов
/ 28 января 2020

Я хочу сделать две разные функции для ресурса, чтобы я мог получить два разных ответа. То есть я хочу, чтобы ресурс возвращал данные без изображения и с изображением.

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, которую я хочу указать c какую функцию вызывать из контроллера. возможно ли это сделать?

1 Ответ

0 голосов
/ 28 января 2020

Итак, в основном я делаю добавление дополнительного параметра к вашему запросу, вы также можете использовать переменную сеанса fla sh, если невозможно добавить дополнительные параметры к вашему запросу , чтобы Фильтровать погоду он идет к функции, которая возвращает изображение или данные без изображения.

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
        ];
    }
...