From fa137c9a79054306b6a15ecafb46e688a84f21ea Mon Sep 17 00:00:00 2001 From: Konstantinos Arvanitakis Date: Wed, 26 Aug 2026 13:14:32 +0300 Subject: [PATCH] Feature: Adding back ChannelIds on Product Indexer --- src/Search/ProductIndexer.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Search/ProductIndexer.php b/src/Search/ProductIndexer.php index cd6fc3d..ad3d4ce 100644 --- a/src/Search/ProductIndexer.php +++ b/src/Search/ProductIndexer.php @@ -27,6 +27,9 @@ use Spatie\MediaLibrary\MediaCollections\Models\Media; * - reviews: public-safe fields only (see mapReview() — reviewer_email is deliberately * excluded, it's PII with no storefront use), including staff replies, plus an * average rating + * - channel_ids (filterable) — Lunar's base indexer only indexes "status" as + * filterable, not channel assignment, so search results can't otherwise be + * scoped to products actually assigned+enabled on the current sales channel * * A review is created/edited independently of its product (Modules\Core\Providers\ * ReviewServiceProvider re-indexes the product on review create/update/delete), so @@ -49,6 +52,7 @@ class ProductIndexer extends BaseProductIndexer 'collections', 'price', 'slugs', + 'channel_ids', ]; } @@ -83,6 +87,10 @@ class ProductIndexer extends BaseProductIndexer $data['reviews'] = $reviews->map(fn (ProductReview $review) => $this->mapReview($review))->all(); $data['review_count'] = $reviews->count(); $data['average_rating'] = $reviews->isEmpty() ? null : round($reviews->avg('rating'), 1); + $data['channel_ids'] = $model->channels() + ->wherePivot('enabled', true) + ->pluck('id') + ->toArray(); return $data; }