ONGR ElasticSearchBundle Converter в пользовательском фильтре

В старых версиях ONGR\ElasticSearchBundle был класс для работы с результатом агрегации:

AggregationIterator

и у него был метод

offsetGet()

в котором был конвертер для преобразования массива в документ. Теперь в новых версиях конвертер был удален оттуда и существует только в

ONGR\ElasticsearchBundle\Result\DocumentIterator

DocumentIterator был бы идеальным, потому что в объекте пользовательского фильтра он есть

public function getViewData(DocumentIterator $result, ViewData $data) {

но конвертер защищенным способом:

protected function convertDocument(array $document) {

И я не хочу редактировать продавца. Я не нашел ничего в документах о том, как использовать конвертер при разборе данных в службе пользовательских фильтров.

Сейчас я просто использовал обходной путь:

$documentIterator = \Closure::bind(function (DocumentIterator $result) use ($topHits) {
                        $documents = [];
                        foreach ($topHits as $document) {
                            $documents[] = $result->convertDocument($document);
                        }

                        return $documents;
                    }, null, 'ONGR\ElasticsearchBundle\Result\DocumentIterator');

$offersDocument = $documentIterator($result);

Но реальное решение было бы лучше.

0 ответов

Другие вопросы по тегам