37 lines
1.0 KiB
PHP
37 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Data\ProductDTO;
|
|
use App\Http\Requests\CreateProductRequest;
|
|
use App\Http\Resources\ProductResource;
|
|
use App\Models\Product;
|
|
use Illuminate\Http\Request;
|
|
|
|
class ProductController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$paginator = Product::query()->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) {}
|
|
}
|