Skip to content

Commit 6d814c3

Browse files
committed
MC-32278: Position sort does not work in GraphQl.
- add apply to preserve order
1 parent 78bb169 commit 6d814c3

File tree

1 file changed

+12
-4
lines changed
  • app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider

1 file changed

+12
-4
lines changed

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/ProductSearch.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77

88
namespace Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider;
99

10+
use Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory;
11+
use Magento\Catalog\Model\ResourceModel\Product\Collection;
12+
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
1013
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionPostProcessor;
14+
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
1115
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierFactory;
1216
use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierInterface;
1317
use Magento\Framework\Api\Search\SearchResultInterface;
1418
use Magento\Framework\Api\SearchCriteriaInterface;
15-
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
16-
use Magento\Catalog\Model\ResourceModel\Product\Collection;
17-
use Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory;
1819
use Magento\Framework\Api\SearchResultsInterface;
19-
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
2020

2121
/**
2222
* Product field data provider for product search, used for GraphQL resolver processing.
@@ -88,6 +88,14 @@ public function getList(
8888
//Join search results
8989
$this->getSearchResultsApplier($searchResult, $collection, $this->getSortOrderArray($searchCriteria))->apply();
9090

91+
//Additional applier to keep sorting from search
92+
$items = [];
93+
foreach ($searchResult->getItems() as $item) {
94+
$items[] = $item->getId();
95+
}
96+
$orderList = join(',', $items);
97+
$collection->getSelect()->order(new \Zend_Db_Expr("FIELD(e.entity_id,$orderList)"));
98+
9199
$this->collectionPreProcessor->process($collection, $searchCriteria, $attributes);
92100
$collection->load();
93101
$this->collectionPostProcessor->process($collection, $attributes);

0 commit comments

Comments
 (0)