/** * @param ClassMetadata $classMetadata * @param Query $query * * @return bool */ protected function canUseResourceRoute(ClassMetadata $classMetadata, Query $query) { if (!$classMetadata->hasRoute('resource')) { return false; } if (count($query->getConditions()) !== count($classMetadata->getIdentifierFieldNames())) { return false; } foreach ($classMetadata->getIdentifierFieldNames() as $idField) { if (!array_key_exists($idField, $query->getConditions())) { return false; } } return true; }
/** * @param array $data * * @return array */ private function mapFromSerialized(array $data) { $mappedEntityData = []; foreach ($data as $serializedName => $value) { if ($this->classMetadata->hasField($this->classMetadata->getFieldName($serializedName))) { $fieldName = $this->classMetadata->getFieldName($serializedName); $fieldMapping = $this->classMetadata->getFieldMapping($fieldName); if (isset($fieldMapping['association'])) { $embedded = []; $associationMetadata = $this->classMetadataFactory->getMetadataFor($fieldMapping['targetEntity']); $associationSerializer = new Serializer($associationMetadata, $this->unitOfWork, $this->classMetadataFactory); if ($fieldMapping['association'] === ClassMetadata::EMBED_ONE) { if (is_array($value)) { $associationData = $associationSerializer->mapFromSerialized($value); $associationSerializer->hydrateSingleEntity($associationData, $embedded); $value = reset($embedded); } else { $value = null; } } } else { $type = Type::getType($fieldMapping['type']); $value = $type->convertToPhpValue($value); } $mappedEntityData[$fieldName] = $value; } } return $mappedEntityData; }
/** * Returns a new instance of the given class. * * @param ClassMetadata $classMetadata * * @return mixed */ private function newInstance(ClassMetadata $classMetadata) { $entity = $classMetadata->newInstance(); return $entity; }