/** * @param array $mappings * @param array $value * @param $type * * @return array */ public static function getIdValues(array $mappings, array $value, $type) { $ids = []; foreach (\array_keys($value) as $propertyName) { if (\in_array($propertyName, RecursiveFormatterHelper::getIdProperties($mappings, $type), true)) { $id = RecursiveFormatterHelper::getIdValue($value[$propertyName]); $ids[] = \is_array($id) ? \implode(JsonApiTransformer::ID_SEPARATOR, $id) : $id; } } return $ids; }
/** * @param \NilPortugues\Api\Mapping\Mapping[] $mappings * @param array $value * * @return array */ public static function setResponseDataTypeAndId(array &$mappings, array &$value) { $type = $value[Serializer::CLASS_IDENTIFIER_KEY]; if (empty($mappings[$type])) { return []; } if (!is_scalar($type)) { return self::setResponseDataTypeAndId($mappings, $type); } $finalType = $mappings[$type]->getClassAlias() ? $mappings[$type]->getClassAlias() : $type; $ids = []; foreach (\array_keys($value) as $propertyName) { if (\in_array($propertyName, RecursiveFormatterHelper::getIdProperties($mappings, $type), true)) { $id = RecursiveFormatterHelper::getIdValue($value[$propertyName]); $ids[] = \is_array($id) ? \implode(JsonApiTransformer::ID_SEPARATOR, $id) : $id; } } return [JsonApiTransformer::TYPE_KEY => RecursiveFormatterHelper::namespaceAsArrayKey($finalType), JsonApiTransformer::ID_KEY => \implode(JsonApiTransformer::ID_SEPARATOR, $ids)]; }