src/Hal/Serializer/ItemNormalizer.php
private function populateRelation(array $data, $object, ?string $format, array $context, array $components, string $type): array
    {
        $class = $this->getObjectClass($object);

        $attributesMetadata = \array_key_exists($class, $this->attributesMetadataCache) ?
            $this->attributesMetadataCache[$class] :
            $this->attributesMetadataCache[$class] = $this->classMetadataFactory ? $this->classMetadataFactory->getMetadataFor($class)->getAttributesMetadata() : null;

        $key = '_'.$type;
        foreach ($components[$type] as $relation) {
            if (null !== $attributesMetadata && $this->isMaxDepthReached($attributesMetadata, $class, $relation['name'], $context)) {
                continue;
            }

            $attributeValue = $this->getAttributeValue($object, $relation['name'], $format, $context);
            if (empty($attributeValue)) {
                continue;
            }

            $relationName = $relation['name'];
            if ($this->nameConverter) {
                $relationName = $this->nameConverter->normalize($relationName, $class, $format, $context);
            }

            if ('one' === $relation['cardinality']) {
                if ('links' === $type) {
                    $data[$key][$relationName]['href'] = $this->getRelationIri($attributeValue);
                    continue;
                }

                $data[$key][$relationName] = $attributeValue;
                continue;
            }

            // many
            $data[$key][$relationName] = [];
            foreach ($attributeValue as $rel) {
                if ('links' === $type) {
                    $rel = ['href' => $this->getRelationIri($rel)];
                }

                $data[$key][$relationName][] = $rel;
            }
        }

        return $data;
    }
private function populateRelation(array $data, $object, ?string $format, array $context, array $components, string $type): array
    {
        $class = $this->getObjectClass($object);

        $attributesMetadata = \array_key_exists($class, $this->attributesMetadataCache) ?
            $this->attributesMetadataCache[$class] :
            $this->attributesMetadataCache[$class] = $this->classMetadataFactory ? $this->classMetadataFactory->getMetadataFor($class)->getAttributesMetadata() : null;

        $key = '_'.$type;
        foreach ($components[$type] as $relation) {
            if (null !== $attributesMetadata && $this->isMaxDepthReached($attributesMetadata, $class, $relation['name'], $context)) {
                continue;
            }

            $attributeValue = $this->getAttributeValue($object, $relation['name'], $format, $context);
            if (empty($attributeValue)) {
                continue;
            }

            $relationName = $relation['name'];
            if ($this->nameConverter) {
                $relationName = $this->nameConverter->normalize($relationName, $class, $format, $context);
            }

            if ('one' === $relation['cardinality']) {
                if ('links' === $type) {
                    $data[$key][$relationName]['href'] = $this->getRelationIri($attributeValue);
                    continue;
                }

                $data[$key][$relationName] = $attributeValue;
                continue;
            }

            // many
            $data[$key][$relationName] = [];
            foreach ($attributeValue as $rel) {
                if ('links' === $type) {
                    $rel = ['href' => $this->getRelationIri($rel)];
                }

                $data[$key][$relationName][] = $rel;
            }
        }

        return $data;
    }
private function populateRelation ( array $ data , $ object , ? string $ format , array $ context , array $ components , string $ type ) : array { $ class = $ this -> getObjectClass ( $ object ) ; $ attributesMetadata = \ array_key_exists ( $ class , $ this -> attributesMetadataCache ) ? $ this -> attributesMetadataCache [ $ class ] : $ this -> attributesMetadataCache [ $ class ] = $ this -> classMetadataFactory ? $ this -> classMetadataFactory -> getMetadataFor ( $ class ) -> getAttributesMetadata ( ) : null ; $ key = '_' . $ type ; foreach ( $ components [ $ type ] as $ relation ) { if ( null !== $ attributesMetadata && $ this -> isMaxDepthReached ( $ attributesMetadata , $ class , $ relation [ 'name' ] , $ context ) ) { continue ; } $ attributeValue = $ this -> getAttributeValue ( $ object , $ relation [ 'name' ] , $ format , $ context ) ; if ( empty ( $ attributeValue ) ) { continue ; } $ relationName = $ relation [ 'name' ] ; if ( $ this -> nameConverter ) { $ relationName = $ this -> nameConverter -> normalize ( $ relationName , $ class , $ format , $ context ) ; } if ( 'one' === $ relation [ 'cardinality' ] ) { if ( 'links' === $ type ) { $ data [ $ key ] [ $ relationName ] [ 'href' ] = $ this -> getRelationIri ( $ attributeValue ) ; continue ; } $ data [ $ key ] [ $ relationName ] = $ attributeValue ; continue ; } // many $ data [ $ key ] [ $ relationName ] = [ ] ; foreach ( $ attributeValue as $ rel ) { if ( 'links' === $ type ) { $ rel = [ 'href' => $ this -> getRelationIri ( $ rel ) ] ; } $ data [ $ key ] [ $ relationName ] [ ] = $ rel ; } } return $ data ; }
Populates _links and _embedded keys.

@param object $object
Populates _links and _embedded keys .