feat: enhance getVariants method to support multiple media URLs and conversions for product variants

This commit is contained in:
Yoga Pangestu 2026-08-20 18:55:13 +07:00
parent 9cca0427c8
commit 06b9c91948

View File

@ -81,15 +81,17 @@ public function getVariants(Product $product): Collection
->with(['productPrices:id,variant_id,type,price']) ->with(['productPrices:id,variant_id,type,price'])
->get() ->get()
->each(function (ProductVariant $variant) { ->each(function (ProductVariant $variant) {
$media = $variant->getFirstMedia('images'); $allMedia = $variant->getMedia('images');
$variant->photo_url = $media $variant->photo_urls = $allMedia
? $this->s3Service->getTemporaryUrl($media->getPath()) ->map(fn ($m) => $this->s3Service->getTemporaryUrl($m->getPath()))
: null; ->values()
$variant->photo_conversion_url = $media ->toArray();
? ($media->getGeneratedConversions()->contains('thumb') $variant->photo_conversion_urls = $allMedia
? $this->s3Service->getTemporaryUrl($media->getPath('thumb')) ->map(fn ($m) => $m->getGeneratedConversions()->contains('thumb')
: $this->s3Service->getTemporaryUrl($media->getPath())) ? $this->s3Service->getTemporaryUrl($m->getPath('thumb'))
: null; : $this->s3Service->getTemporaryUrl($m->getPath()))
->values()
->toArray();
$prices = $variant->productPrices->mapWithKeys(fn ($p) => [$p->type->value => $p->price]); $prices = $variant->productPrices->mapWithKeys(fn ($p) => [$p->type->value => $p->price]);
$variant->prices = $prices; $variant->prices = $prices;