public function transform(array $elasticaObjects)
    {
        $ids = $highlights = [];
        foreach ($elasticaObjects as $elasticaObject) {
            $ids[] = $elasticaObject->getId();
            $highlights[$elasticaObject->getId()] = $elasticaObject->getHighlights();
        }

        $objects = $this->findByIdentifiers($ids, $this->options['hydrate']);
        $objectsCnt = count($objects);
        $elasticaObjectsCnt = count($elasticaObjects);
        if (!$this->options['ignore_missing'] && $objectsCnt < $elasticaObjectsCnt) {
            throw new \RuntimeException(sprintf('Cannot find corresponding Doctrine objects (%d) for all Elastica results (%d). IDs: %s', $objectsCnt, $elasticaObjectsCnt, implode(', ', $ids)));
        }

        $propertyAccessor = $this->propertyAccessor;
        $identifier = $this->options['identifier'];
        foreach ($objects as $object) {
            if ($object instanceof HighlightableModelInterface) {
                $id = $propertyAccessor->getValue($object, $identifier);
                $object->setElasticHighlights($highlights[(string) $id]);
            }
        }

        // sort objects in the order of ids
        $idPos = array_flip($ids);
        usort(
            $objects,
            function ($a, $b) use ($idPos, $identifier, $propertyAccessor) {
                if ($this->options['hydrate']) {
                    return $idPos[(string) $propertyAccessor->getValue(
                        $a,
                        $identifier
                    )] > $idPos[(string) $propertyAccessor->getValue($b, $identifier)];
                }

                return $idPos[$a[$identifier]] > $idPos[$b[$identifier]];
            }
        );

        return $objects;
    }
public function transform(array $elasticaObjects)
    {
        $ids = $highlights = [];
        foreach ($elasticaObjects as $elasticaObject) {
            $ids[] = $elasticaObject->getId();
            $highlights[$elasticaObject->getId()] = $elasticaObject->getHighlights();
        }

        $objects = $this->findByIdentifiers($ids, $this->options['hydrate']);
        $objectsCnt = count($objects);
        $elasticaObjectsCnt = count($elasticaObjects);
        if (!$this->options['ignore_missing'] && $objectsCnt < $elasticaObjectsCnt) {
            throw new \RuntimeException(sprintf('Cannot find corresponding Doctrine objects (%d) for all Elastica results (%d). IDs: %s', $objectsCnt, $elasticaObjectsCnt, implode(', ', $ids)));
        }

        $propertyAccessor = $this->propertyAccessor;
        $identifier = $this->options['identifier'];
        foreach ($objects as $object) {
            if ($object instanceof HighlightableModelInterface) {
                $id = $propertyAccessor->getValue($object, $identifier);
                $object->setElasticHighlights($highlights[(string) $id]);
            }
        }

        // sort objects in the order of ids
        $idPos = array_flip($ids);
        usort(
            $objects,
            function ($a, $b) use ($idPos, $identifier, $propertyAccessor) {
                if ($this->options['hydrate']) {
                    return $idPos[(string) $propertyAccessor->getValue(
                        $a,
                        $identifier
                    )] > $idPos[(string) $propertyAccessor->getValue($b, $identifier)];
                }

                return $idPos[$a[$identifier]] > $idPos[$b[$identifier]];
            }
        );

        return $objects;
    }
public function transform ( array $ elasticaObjects ) { $ ids = $ highlights = [ ] ; foreach ( $ elasticaObjects as $ elasticaObject ) { $ ids [ ] = $ elasticaObject -> getId ( ) ; $ highlights [ $ elasticaObject -> getId ( ) ] = $ elasticaObject -> getHighlights ( ) ; } $ objects = $ this -> findByIdentifiers ( $ ids , $ this -> options [ 'hydrate' ] ) ; $ objectsCnt = count ( $ objects ) ; $ elasticaObjectsCnt = count ( $ elasticaObjects ) ; if ( ! $ this -> options [ 'ignore_missing' ] && $ objectsCnt < $ elasticaObjectsCnt ) { throw new \ RuntimeException ( sprintf ( 'Cannot find corresponding Doctrine objects (%d) for all Elastica results (%d). IDs: %s' , $ objectsCnt , $ elasticaObjectsCnt , implode ( ', ' , $ ids ) ) ) ; } $ propertyAccessor = $ this -> propertyAccessor ; $ identifier = $ this -> options [ 'identifier' ] ; foreach ( $ objects as $ object ) { if ( $ object instanceof HighlightableModelInterface ) { $ id = $ propertyAccessor -> getValue ( $ object , $ identifier ) ; $ object -> setElasticHighlights ( $ highlights [ ( string ) $ id ] ) ; } } // sort objects in the order of ids $ idPos = array_flip ( $ ids ) ; usort ( $ objects , function ( $ a , $ b ) use ( $ idPos , $ identifier , $ propertyAccessor ) { if ( $ this -> options [ 'hydrate' ] ) { return $ idPos [ ( string ) $ propertyAccessor -> getValue ( $ a , $ identifier ) ] > $ idPos [ ( string ) $ propertyAccessor -> getValue ( $ b , $ identifier ) ] ; } return $ idPos [ $ a [ $ identifier ] ] > $ idPos [ $ b [ $ identifier ] ] ; } ) ; return $ objects ; }
Transforms an array of elastica objects into an array of
model objects fetched from the doctrine repository.

@param array $elasticaObjects of elastica objects

@throws \RuntimeException

@return array
Transforms an array of elastica objects into an array of model objects fetched from the doctrine repository .