get(FilterStrategyInterface::class); } if (null === $aliasResolver) { $aliasResolver = ObjectManager::getInstance()->get(AliasResolver::class); } if (null === $filtersExtractor) { $filtersExtractor = ObjectManager::getInstance()->get(FiltersExtractor::class); } $this->filterStrategy = $filterStrategy; $this->aliasResolver = $aliasResolver; $this->filtersExtractor = $filtersExtractor; } /** * @param Select $select * @param RequestInterface $request * @return Select * @throws \LogicException */ public function addTables(Select $select, RequestInterface $request) { $appliedFilters = []; $filters = $this->filtersExtractor->extractFiltersFromQuery($request->getQuery()); foreach ($filters as $filter) { $alias = $this->aliasResolver->getAlias($filter); if (!array_key_exists($alias, $appliedFilters)) { $isApplied = $this->filterStrategy->apply($filter, $select); if ($isApplied) { $appliedFilters[$alias] = true; } } } return $select; } /** * This method is deprecated. * Please use \Magento\CatalogSearch\Model\Adapter\Mysql\Filter\AliasResolver::getAlias() instead. * * @deprecated 100.1.6 * @see AliasResolver::getAlias() * * @param FilterInterface $filter * @return string */ public function getMappingAlias(FilterInterface $filter) { return $this->aliasResolver->getAlias($filter); } }