|
7 | 7 |
|
8 | 8 | namespace Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider;
|
9 | 9 |
|
| 10 | +use Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory; |
| 11 | +use Magento\Catalog\Model\ResourceModel\Product\Collection; |
| 12 | +use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory; |
10 | 13 | use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionPostProcessor;
|
| 14 | +use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface; |
11 | 15 | use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierFactory;
|
12 | 16 | use Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplierInterface;
|
13 | 17 | use Magento\Framework\Api\Search\SearchResultInterface;
|
14 | 18 | 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; |
18 | 19 | use Magento\Framework\Api\SearchResultsInterface;
|
19 |
| -use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface; |
20 | 20 |
|
21 | 21 | /**
|
22 | 22 | * Product field data provider for product search, used for GraphQL resolver processing.
|
@@ -88,6 +88,14 @@ public function getList(
|
88 | 88 | //Join search results
|
89 | 89 | $this->getSearchResultsApplier($searchResult, $collection, $this->getSortOrderArray($searchCriteria))->apply();
|
90 | 90 |
|
| 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 | + |
91 | 99 | $this->collectionPreProcessor->process($collection, $searchCriteria, $attributes);
|
92 | 100 | $collection->load();
|
93 | 101 | $this->collectionPostProcessor->process($collection, $attributes);
|
|
0 commit comments