From 87dc1c1284b1acc07277f6ace120846bb400a6be Mon Sep 17 00:00:00 2001 From: Abdelrhman Gamal Date: Thu, 26 May 2022 11:07:23 +0200 Subject: [PATCH 1/2] Optimze Get Gategory Product Attribute function , Specially for large number for product. --- .../src/Repositories/ProductFlatRepository.php | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php index 566b5dae2..64e3d8aeb 100644 --- a/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php @@ -76,14 +76,7 @@ class ProductFlatRepository extends Repository { $qb = $this->categoryProductQuerybuilder($categoryId); - $productFlatIds = $qb->pluck('id')->toArray(); - $productIds = $qb->pluck('product_flat.product_id')->toArray(); - - $childProductIds = $this->model->distinct() - ->whereIn('parent_id', $productFlatIds) - ->pluck('product_id')->toArray(); - - $productIds = array_merge($productIds, $childProductIds); + $childQuery = $this->model->distinct()->whereIn('parent_id', $qb->distinct()->select(['id'])); $attributeValues = $this->model ->distinct() @@ -92,7 +85,10 @@ class ProductFlatRepository extends Repository ->leftJoin('product_super_attributes as ps', 'product_flat.product_id', 'ps.product_id') ->select('pa.integer_value', 'pa.text_value', 'pa.attribute_id', 'ps.attribute_id as attributeId') ->where('is_filterable', 1) - ->WhereIn('pa.product_id', $productIds) + ->where(function ($query) use ($qb,$childQuery){ + $query->WhereIn('pa.product_id', $qb->distinct()->select(['product_flat.product_id'])); + $query->orWhereIn('pa.product_id', $childQuery->select(['product_flat.product_id'])); + }) ->get(); $attributeInfo['attributeOptions'] = $attributeInfo['attributes'] = []; From 2aa18422621b168e3d2d1966cca182e88df31815 Mon Sep 17 00:00:00 2001 From: Devansh <68321766+devansh-webkul@users.noreply.github.com> Date: Tue, 7 Jun 2022 18:18:51 +0530 Subject: [PATCH 2/2] Some Spacing Added --- .../Webkul/Product/src/Repositories/ProductFlatRepository.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php index 64e3d8aeb..477e8dce2 100644 --- a/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php @@ -85,8 +85,8 @@ class ProductFlatRepository extends Repository ->leftJoin('product_super_attributes as ps', 'product_flat.product_id', 'ps.product_id') ->select('pa.integer_value', 'pa.text_value', 'pa.attribute_id', 'ps.attribute_id as attributeId') ->where('is_filterable', 1) - ->where(function ($query) use ($qb,$childQuery){ - $query->WhereIn('pa.product_id', $qb->distinct()->select(['product_flat.product_id'])); + ->where(function ($query) use ($qb, $childQuery) { + $query->whereIn('pa.product_id', $qb->distinct()->select(['product_flat.product_id'])); $query->orWhereIn('pa.product_id', $childQuery->select(['product_flat.product_id'])); }) ->get();