/** * Modify the query with any possible query modifiers. * @param QueryBuilder $builder * @param IndexDefinitionInterface $definition * @return Query */ private function modifyQuery(QueryBuilder $builder, IndexDefinitionInterface $definition) { if ($definition->hasQueryModifier()) { $modifier = $this->queryModifierResolver->resolve($definition->getQueryModifier()); $result = $modifier->modifyBuilder($builder); if ($result instanceof QueryBuilder) { $builder = $result; } $query = $builder->getQuery(); $result = $modifier->modifyQuery($query); if ($result instanceof Query) { $query = $result; } } else { $query = $builder->getQuery(); } return $query; }