/** * Loads a list of entities by a list of field conditions. * * @param array $conditions * @param array|null $orderBy * @param int|null $limit * @param int|null $offset * * @return array */ public function loadAll(array $conditions = [], array $orderBy = [], $limit = null, $offset = null) { $uri = $this->getUri($conditions, $orderBy, $limit, $offset); $route = $this->getRoute($conditions, $orderBy, $limit, $offset); $response = $this->connection->request('GET', $uri); return $this->serializer->deserialize($response->getBody(), $route->returnsCollection(), $route->getEnvelopes()); }
/** * @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; }