/**
* Prepare filter condition from an array as used into addFieldToFilter.
*
* @SuppressWarnings(PHPMD.ElseExpression)
*
* @param ContainerConfigurationInterface $containerConfig Search request container configuration.
* @param array $filters Filters to be built.
*
* @return 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;
}