Skip to content

Commit 6904b5b

Browse files
committed
ACP2E-1172: categoryList Graphql request show 0 product count
1 parent 7615873 commit 6904b5b

File tree

2 files changed

+11
-20
lines changed

2 files changed

+11
-20
lines changed

app/code/Magento/CatalogGraphQl/Model/AttributesJoiner.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use GraphQL\Language\AST\FieldNode;
1111
use GraphQL\Language\AST\InlineFragmentNode;
1212
use GraphQL\Language\AST\NodeKind;
13+
use Magento\Catalog\Api\Data\CategoryInterface;
1314
use Magento\Eav\Model\Entity\Collection\AbstractCollection;
1415
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
1516

@@ -75,7 +76,6 @@ public function getQueryFields(FieldNode $fieldNode, ResolveInfo $resolveInfo):
7576
$fragmentFields[] = $this->addInlineFragmentFields($resolveInfo, $field);
7677
} elseif ($field->kind === NodeKind::FRAGMENT_SPREAD &&
7778
($spreadFragmentNode = $resolveInfo->fragments[$field->name->value])) {
78-
7979
foreach ($spreadFragmentNode->selectionSet->selections as $spreadNode) {
8080
if (isset($spreadNode->selectionSet->selections)) {
8181
$fragmentFields[] = $this->getQueryFields($spreadNode, $resolveInfo);
@@ -85,6 +85,10 @@ public function getQueryFields(FieldNode $fieldNode, ResolveInfo $resolveInfo):
8585
}
8686
} else {
8787
$selectedFields[] = $field->name->value;
88+
if ($resolveInfo->fieldName === 'categoryList'
89+
&& $field->name->value === CategoryInterface::KEY_PRODUCT_COUNT) {
90+
$selectedFields[] = 'is_anchor';
91+
}
8892
}
8993
}
9094
if ($fragmentFields) {

app/code/Magento/CatalogGraphQl/Model/Resolver/Category/ProductsCount.php

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@
88
namespace Magento\CatalogGraphQl\Model\Resolver\Category;
99

1010
use Magento\Catalog\Model\Category;
11-
use Magento\Catalog\Model\CategoryRepository;
1211
use Magento\Catalog\Model\Product\Visibility;
1312
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CompositeCollectionProcessor;
1413
use Magento\Framework\Api\SearchCriteriaInterface;
15-
use Magento\Framework\App\ObjectManager;
16-
use Magento\Framework\GraphQl\Config\Element\Field;
1714
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
18-
use Magento\Framework\GraphQl\Query\ResolverInterface;
1915
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
16+
use Magento\Framework\GraphQl\Config\Element\Field;
17+
use Magento\Framework\GraphQl\Query\ResolverInterface;
18+
2019

2120
/**
2221
* Retrieves products count for a category
@@ -38,27 +37,19 @@ class ProductsCount implements ResolverInterface
3837
*/
3938
private $searchCriteria;
4039

41-
/**
42-
* @var CategoryRepository
43-
*/
44-
private $categoryRepository;
45-
4640
/**
4741
* @param Visibility $catalogProductVisibility
4842
* @param SearchCriteriaInterface $searchCriteria
4943
* @param CompositeCollectionProcessor $collectionProcessor
50-
* @param CategoryRepository|null $categoryRepository
5144
*/
5245
public function __construct(
5346
Visibility $catalogProductVisibility,
5447
SearchCriteriaInterface $searchCriteria,
55-
CompositeCollectionProcessor $collectionProcessor,
56-
?CategoryRepository $categoryRepository = null
48+
CompositeCollectionProcessor $collectionProcessor
5749
) {
5850
$this->catalogProductVisibility = $catalogProductVisibility;
5951
$this->searchCriteria = $searchCriteria;
6052
$this->collectionProcessor = $collectionProcessor;
61-
$this->categoryRepository = $categoryRepository ?? ObjectManager::getInstance()->get(CategoryRepository::class);
6253
}
6354

6455
/**
@@ -71,11 +62,6 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value
7162
}
7263
/** @var Category $category */
7364
$category = $value['model'];
74-
$isAnchored = $category->getIsAnchor();
75-
if (!empty($value['id']) && !$isAnchored) {
76-
$isAnchored = $this->categoryRepository->get($value['id'])->getIsAnchor();
77-
}
78-
$category->setIsAnchor($isAnchored);
7965
$productsCollection = $category->getProductCollection();
8066
$productsCollection->setVisibility($this->catalogProductVisibility->getVisibleInSiteIds());
8167
$productsCollection = $this->collectionProcessor->process(
@@ -84,7 +70,8 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value
8470
[],
8571
$context
8672
);
73+
$size = $productsCollection->getSize();
8774

88-
return $productsCollection->getSize();
75+
return $size;
8976
}
9077
}

0 commit comments

Comments
 (0)