/** * Build sort orders from array of sort orders definition. * * @param ContainerConfigurationInterface $containerConfig Request configuration. * @param array $orders Sort orders definitions. * * @return SortOrderInterface[] */ public function buildSordOrders(ContainerConfigurationInterface $containerConfig, array $orders) { $sortOrders = []; $mapping = $containerConfig->getMapping(); $orders = $this->addDefaultSortOrders($orders, $mapping); foreach ($orders as $fieldName => $sortOrderParams) { $factory = $this->standardOrderFactory; try { $sortField = $mapping->getField($fieldName); $sortOrderParams = $this->getSortOrderParams($sortField, $sortOrderParams); if (isset($sortOrderParams['nestedPath'])) { $factory = $this->nestedOrderFactory; } if (isset($sortOrderParams['nestedFilter'])) { $nestedFilter = $this->queryBuilder->create($containerConfig, $sortOrderParams['nestedFilter']); $sortOrderParams['nestedFilter'] = $nestedFilter->getQuery(); } } catch (\LogicException $e) { $sortOrderParams['field'] = $fieldName; } $sortOrders[] = $factory->create($sortOrderParams); } return $sortOrders; }
/** * Create a query from filters passed as arguments. * * @param ContainerConfigurationInterface $containerConfiguration Search request container configuration. * @param array $filters Filters used to build the query. * * @return QueryInterface */ public function createFilters(ContainerConfigurationInterface $containerConfiguration, array $filters) { return $this->filterQueryBuilder->create($containerConfiguration, $filters); }