Smile\ElasticsuiteCore\Search\Request\SortOrder\SortOrderBuilder::buildSordOrders PHP Method

buildSordOrders() public method

Build sort orders from array of sort orders definition.
public buildSordOrders ( Smile\ElasticsuiteCore\Api\Search\Request\ContainerConfigurationInterface $containerConfig, array $orders ) : Smile\ElasticsuiteCore\Search\Request\SortOrderInterface[]
$containerConfig Smile\ElasticsuiteCore\Api\Search\Request\ContainerConfigurationInterface Request configuration.
$orders array Sort orders definitions.
return Smile\ElasticsuiteCore\Search\Request\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;
    }