Smile\ElasticsuiteCore\Search\Request\Query\Filter\QueryBuilder::create PHP Method

create() public method

Prepare filter condition from an array as used into addFieldToFilter.
public create ( Smile\ElasticsuiteCore\Api\Search\Request\ContainerConfigurationInterface $containerConfig, array $filters ) : Smile\ElasticsuiteCore\Search\Request\QueryInterface
$containerConfig Smile\ElasticsuiteCore\Api\Search\Request\ContainerConfigurationInterface Search request container configuration.
$filters array Filters to be built.
return Smile\ElasticsuiteCore\Search\Request\QueryInterface
    public function create(ContainerConfigurationInterface $containerConfig, array $filters)
    {
        $queries = [];
        $mapping = $containerConfig->getMapping();
        foreach ($filters as $fieldName => $condition) {
            if ($condition instanceof QueryInterface) {
                $queries[] = $condition;
            } else {
                $mappingField = $mapping->getField($fieldName);
                $queries[] = $this->prepareFieldCondition($mappingField, $condition);
            }
        }
        $filterQuery = current($queries);
        if (count($queries) > 1) {
            $filterQuery = $this->queryFactory->create(QueryInterface::TYPE_BOOL, ['must' => $queries]);
        }
        return $filterQuery;
    }

Usage Example

 /**
  * 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;
 }
All Usage Examples Of Smile\ElasticsuiteCore\Search\Request\Query\Filter\QueryBuilder::create