with(['category:id,name,slug', 'images:id,path,product_id'])->paginate(); $paginatedDtos = $paginator->through(fn ($product) => ProductDTO::fromModel($product)); return ProductResource::collection($paginatedDtos); } public function store(CreateProductRequest $request) { return Product::create($request->validated()); } public function show(string $slug) { $product = Product::where('slug', $slug)->with(['category:id,name,slug', 'images:id,path,product_id'])->firstOrFail(); return new ProductResource(ProductDTO::fromModel($product)); } public function update(Request $request, Product $product) {} public function destroy(Product $product) {} }