Есть, к примеру, роут для вывода списка статей и роут для вывода конкретной статьи:
public function index()
{
return new ArticleCollection(Article::all());
}
public function show(Article $article)
{
return new ArticleResource($article);
}
В ArticleResource:
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
];
}
В ArticleCollection:
public function toArray($request)
{
return [
ArticleResource::collection($this->collection),
];
}
Можно ли сделать так, чтобы при выводе списка статей не выводилось поле content,
не создавая еще один дополнительный ArticleResource отдельно для вывода списка?
Т.е. грубо говоря для первого роута получить json:
{
"data": [
{
"id": 1,
"title": "Заголовок 1"
},
{
"id": 2,
"title": "Заголовок 2"
}
]
}
Для второго роута получить:
{
"data": {
"id": 1,
"title": "Заголовок 1",
"content": "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
}
}
Может быть через
$this->when как-то проверить, что это выводится ресурс внутри коллекции или что-то такое?