src/Normalizer/Value/RelationshipNormalizerValue.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Normalizer/Value/RelationshipNormalizerValue.php b/src/Normalizer/Value/RelationshipNormalizerValue.php index df0d653..2cad6e9 100644 --- a/src/Normalizer/Value/RelationshipNormalizerValue.php +++ b/src/Normalizer/Value/RelationshipNormalizerValue.php @@ -104,14 +104,29 @@ class RelationshipNormalizerValue extends FieldNormalizerValue { $unique_resource_identifier_objects = array_reduce($resource_identifier_objects, function ($carry, $resource_identifier_object) { $id = $resource_identifier_object['id']; + $has_meta = isset($resource_identifier_object['meta']); + if (!isset($carry[$id])) { $carry[$id] = $resource_identifier_object; + if ($has_meta) { + // All resource identifier objects' metas need to be nested. + unset($carry[$id]['meta']); + } } else { - if (!isset($carry[$id]['meta'])) { + // Increment arity. + if (!isset($carry[$id]['meta']['arity'])) { $carry[$id]['meta']['arity'] = 1; } $carry[$id]['meta']['arity']++; + + // Nest all resource identifier objects' metas under a shared key. + if ($has_meta) { + if (!isset($carry[$id]['meta']['metas'])) { + $carry[$id]['meta']['metas'] = []; + } + $carry[$id]['meta']['metas'][] = $resource_identifier_object['meta']; + } } return $carry; }, []);