Как ограничить вывод данных в ResourceCollection?

в разных методах у меня вытаскиваются данные с одной ResourceCollection

$products =  ProductResource::collection(Product::all());

ProductResource.php

public function toArray($request)
    {
        return[
            'id'=>$this->id,
            'name'=>$this->name,
            'description'=>$this->description,
            'users'=>$this->users,
            'reviews'=> ReviewResource::collection($this->review)->take(2),
        ];
    }


Например в первой функции мне необходимо вывести только,id,name,и users из коллекции
А во втором вывести все кроме users.

В данной случае мне необходимо создать новую коллекцию?или же можно работать с одной, если да то как?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Если users - это подчиненная модель, то можно так:
public function toArray($request)
  {
        return[
            'id'=>$this->id,
            'name'=>$this->name,
            'description'=>$this->description,
            'users'=>$this->whenLoaded('users'), // кстати, почему тут не ресурс?
            'reviews'=> ReviewResource::collection($this->review)->take(2),
        ];
    ];
  }

и там, где нужны пользователи, запрашивать коллекцию вместе с ->with(['users'])->get(), а где нет - без. Ну или через $model->load('users'), если это не коллекция, а экземпляр.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы