From 9b95087b9472b31edf4ce38b92691c0326747128 Mon Sep 17 00:00:00 2001 From: Mekan1206 Date: Tue, 28 Apr 2026 17:49:05 +0500 Subject: [PATCH] add filtering by properties --- .../Ecommerce/Product/Filter/ProductFilterer.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/Helpers/Ecommerce/Product/Filter/ProductFilterer.php b/app/Helpers/Ecommerce/Product/Filter/ProductFilterer.php index 21867a4..e774f60 100644 --- a/app/Helpers/Ecommerce/Product/Filter/ProductFilterer.php +++ b/app/Helpers/Ecommerce/Product/Filter/ProductFilterer.php @@ -48,6 +48,7 @@ class ProductFilterer 'min_price' => ['nullable', 'numeric'], 'max_price' => ['nullable', 'numeric'], 'backorder' => ['nullable', 'in:0,1'], + 'properties' => ['nullable', 'array'], ]); } @@ -93,6 +94,18 @@ class ProductFilterer $this->queryBuilder->where('products.backorder', $this->request->backorder); } + if ($this->request->filled('properties')) { + foreach ($this->request->input('properties') as $attributeSlug => $values) { + $valuesArray = explode(',', $values); + + $this->queryBuilder->where(function ($query) use ($attributeSlug, $valuesArray) { + foreach ($valuesArray as $value) { + $query->orWhereJsonContains("properties_json->{$attributeSlug}", $value); + } + }); + } + } + return $this->queryBuilder; } }