collections->getById($collection); abort_if($collectionData === null, Response::HTTP_NOT_FOUND); $perPage = 12; $page = (int) request('page', 1); // Listing/filtering reads from the Meilisearch index via ProductService, // not Eloquent — see Modules\Core\Catalog\Services\ProductService. list() returns a // real LengthAwarePaginator of plain arrays (already localized/flattened), // not Product models. $products = $this->products->list( filters: new ProductFilters(collectionId: $collectionData['id']), perPage: $perPage, page: $page, )->through(fn (array $product) => [ 'name' => $product['name'], 'price' => $product['price'], 'image' => $product['media'][0]['url'] ?? null, 'href' => route('product.show', ['id' => $product['id']]), ]); return view('category.show', [ 'collection' => $collectionData, 'products' => $products, ]); } }