#laravel
#laravel
Вопрос:
У меня есть 2 маршрута, которые используют show() amp; index() метод в контроллере. Имя модели — Feed и имеет 4 отношения FeedType, FeedImage, FeedVideo и FeedCaption.
Я возвращаю все поля и конкретные поля отношений, кроме поля «эскиз«, через ресурс Feed, когда API нажимает show () метод
class Feed extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param IlluminateHttpRequest $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'keywords' => $this->keywords,
'slug' => $this->slug,
'type' => new FeedTypeResource($this->feedType),
'images' => FeedImageResource::collection($this->feedImages),
'video' => new FeedVideoLinkResource($this->feedVideoLink),
'caption' => new FeedCaptionResource($this->feedCaption),
];
}
}
Теперь я хочу вернуть только 3 поля ‘title’, ‘thumbnail’, ‘created_at‘ с одним полем связи ‘name‘ из отношения FeedType через ресурс, когда API нажимает show() метод. Итак, я создал ресурс FeedCollection. Но это выдает ошибку.
class FeedCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @param IlluminateHttpRequest $request
* @return array
*/
public function toArray($request)
{
return [
'title' => $this->title,
'thumbnail' => $this->thumbnail,
];
}
}
Комментарии:
1. какая ошибка, это информация, которую важно знать… также вы, вероятно, имеете дело с одним объектом, а не с коллекцией
Ответ №1:
Вы можете использовать метод chunk для сбора.Метод chunk разбивает коллекцию на несколько меньших коллекций заданного размера:
$collection = collect([1, 2, 3, 4, 5, 6, 7]);
$chunks = $collection->chunk(4);
$chunks->all();
// [[1, 2, 3, 4], [5, 6, 7]]
Этот метод особенно полезен в представлениях при работе с грид-системой, такой как Bootstrap. Например, представьте, что у вас есть коллекция моделей Eloquent, которые вы хотите отобразить в таблице:
@foreach ($products->chunk(3) as $chunk)
<div class="row">
@foreach ($chunk as $product)
<div class="col-xs-4">{{ $product->name }}</div>
@endforeach
</div>
@endforeach
пожалуйста, смотрите Примеры по ссылке:
https://laravel.com/docs/8.x/collections#method-chunk