public function hydrate($document, $data, array $hints = array()) { $hydratedData = array(); /** @Field(type="id") */ if (isset($data['_id'])) { $value = $data['_id']; $return = $value instanceof \MongoId ? (string) $value : $value; $this->class->reflFields['id']->setValue($document, $return); $hydratedData['id'] = $return; } /** @Field(type="date") */ if (isset($data['created_at'])) { $value = $data['created_at']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['created_at']->setValue($document, clone $return); $hydratedData['created_at'] = $return; } /** @Field(type="string") */ if (isset($data['path'])) { $value = $data['path']; $return = (string) $value; $this->class->reflFields['path']->setValue($document, $return); $hydratedData['path'] = $return; } return $hydratedData; }
public function hydrate($document, $data, array $hints = array()) { $hydratedData = array(); /** @Field(type="id") */ if (isset($data['_id'])) { $value = $data['_id']; $return = $value instanceof \MongoId ? (string) $value : $value; $this->class->reflFields['id']->setValue($document, $return); $hydratedData['id'] = $return; } /** @Field(type="date") */ if (isset($data['since'])) { $value = $data['since']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['since']->setValue($document, clone $return); $hydratedData['since'] = $return; } /** @Many */ $mongoData = isset($data['users']) ? $data['users'] : null; $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork); $return->setHints($hints); $return->setOwner($document, $this->class->fieldMappings['users']); $return->setInitialized(false); if ($mongoData) { $return->setMongoData($mongoData); } $this->class->reflFields['users']->setValue($document, $return); $hydratedData['users'] = $return; /** @Field(type="boolean") */ if (isset($data['verified'])) { $value = $data['verified']; $return = (bool) $value; $this->class->reflFields['verified']->setValue($document, $return); $hydratedData['verified'] = $return; } /** @Field(type="boolean") */ if (isset($data['sent'])) { $value = $data['sent']; $return = (bool) $value; $this->class->reflFields['sent']->setValue($document, $return); $hydratedData['sent'] = $return; } /** @Field(type="date") */ if (isset($data['lastContact'])) { $value = $data['lastContact']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['lastContact']->setValue($document, clone $return); $hydratedData['lastContact'] = $return; } return $hydratedData; }
public function hydrate($document, $data, array $hints = array()) { $hydratedData = array(); /** @Field(type="id") */ if (isset($data['_id'])) { $value = $data['_id']; $return = $value instanceof \MongoId ? (string) $value : $value; $this->class->reflFields['id']->setValue($document, $return); $hydratedData['id'] = $return; } /** @ReferenceOne */ if (isset($data['author'])) { $reference = $data['author']; if (isset($this->class->fieldMappings['author']['simple']) && $this->class->fieldMappings['author']['simple']) { $className = $this->class->fieldMappings['author']['targetDocument']; $mongoId = $reference; } else { $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['author'], $reference); $mongoId = $reference['$id']; } $targetMetadata = $this->dm->getClassMetadata($className); $id = $targetMetadata->getPHPIdentifierValue($mongoId); $return = $this->dm->getReference($className, $id); $this->class->reflFields['author']->setValue($document, $return); $hydratedData['author'] = $return; } /** @Field(type="date") */ if (isset($data['date'])) { $value = $data['date']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['date']->setValue($document, clone $return); $hydratedData['date'] = $return; } /** @Field(type="string") */ if (isset($data['text'])) { $value = $data['text']; $return = (string) $value; $this->class->reflFields['text']->setValue($document, $return); $hydratedData['text'] = $return; } /** @Many */ $mongoData = isset($data['replies']) ? $data['replies'] : null; $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork); $return->setHints($hints); $return->setOwner($document, $this->class->fieldMappings['replies']); $return->setInitialized(false); if ($mongoData) { $return->setMongoData($mongoData); } $this->class->reflFields['replies']->setValue($document, $return); $hydratedData['replies'] = $return; return $hydratedData; }
/** * Convert PHP value to MongoDb representation * * @param mixed $value Value to convert * @return \MongoDate[] */ public static function convertToDb($value) { if (!is_array($value)) { return []; } // see DateType::convertToDatabaseValue() $convertor = function ($value) { if ($value === null || $value instanceof \MongoDate) { return $value; } try { $datetime = DateType::getDateTime($value); return new \MongoDate($datetime->format('U'), $datetime->format('u')); } catch (\InvalidArgumentException $e) { return null; } }; return array_values(array_filter(array_map($convertor, $value))); }
public function hydrate($document, $data, array $hints = array()) { $hydratedData = array(); /** @Field(type="id") */ if (isset($data['_id'])) { $value = $data['_id']; $return = $value instanceof \MongoId ? (string) $value : $value; $this->class->reflFields['id']->setValue($document, $return); $hydratedData['id'] = $return; } /** @Field(type="string") */ if (isset($data['userName'])) { $value = $data['userName']; $return = (string) $value; $this->class->reflFields['userName']->setValue($document, $return); $hydratedData['userName'] = $return; } /** @Field(type="string") */ if (isset($data['email'])) { $value = $data['email']; $return = (string) $value; $this->class->reflFields['email']->setValue($document, $return); $hydratedData['email'] = $return; } /** @Field(type="string") */ if (isset($data['password'])) { $value = $data['password']; $return = (string) $value; $this->class->reflFields['password']->setValue($document, $return); $hydratedData['password'] = $return; } /** @Field(type="string") */ if (isset($data['firstName'])) { $value = $data['firstName']; $return = (string) $value; $this->class->reflFields['firstName']->setValue($document, $return); $hydratedData['firstName'] = $return; } /** @Field(type="string") */ if (isset($data['lastName'])) { $value = $data['lastName']; $return = (string) $value; $this->class->reflFields['lastName']->setValue($document, $return); $hydratedData['lastName'] = $return; } /** @Field(type="string") */ if (isset($data['status'])) { $value = $data['status']; $return = (string) $value; $this->class->reflFields['status']->setValue($document, $return); $hydratedData['status'] = $return; } /** @Field(type="date") */ if (isset($data['created'])) { $value = $data['created']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['created']->setValue($document, clone $return); $hydratedData['created'] = $return; } /** @Field(type="date") */ if (isset($data['lastLogin'])) { $value = $data['lastLogin']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['lastLogin']->setValue($document, clone $return); $hydratedData['lastLogin'] = $return; } /** @Field(type="date") */ if (isset($data['lastLogout'])) { $value = $data['lastLogout']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['lastLogout']->setValue($document, clone $return); $hydratedData['lastLogout'] = $return; } /** @EmbedOne */ if (isset($data['profile'])) { $embeddedDocument = $data['profile']; $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['profile'], $embeddedDocument); $embeddedMetadata = $this->dm->getClassMetadata($className); $return = $embeddedMetadata->newInstance(); $embeddedData = $this->dm->getHydratorFactory()->hydrate($return, $embeddedDocument, $hints); $embeddedId = $embeddedMetadata->identifier && isset($embeddedData[$embeddedMetadata->identifier]) ? $embeddedData[$embeddedMetadata->identifier] : null; $this->unitOfWork->registerManaged($return, $embeddedId, $embeddedData); $this->unitOfWork->setParentAssociation($return, $this->class->fieldMappings['profile'], $document, 'profile'); $this->class->reflFields['profile']->setValue($document, $return); $hydratedData['profile'] = $return; } /** @Many */ $mongoData = isset($data['messages']) ? $data['messages'] : null; $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork); $return->setHints($hints); $return->setOwner($document, $this->class->fieldMappings['messages']); $return->setInitialized(false); if ($mongoData) { $return->setMongoData($mongoData); } $this->class->reflFields['messages']->setValue($document, $return); $hydratedData['messages'] = $return; /** @Many */ $mongoData = isset($data['connectedToMe']) ? $data['connectedToMe'] : null; $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork); $return->setHints($hints); $return->setOwner($document, $this->class->fieldMappings['connectedToMe']); $return->setInitialized(false); if ($mongoData) { $return->setMongoData($mongoData); } $this->class->reflFields['connectedToMe']->setValue($document, $return); $hydratedData['connectedToMe'] = $return; /** @Many */ $mongoData = isset($data['myConnections']) ? $data['myConnections'] : null; $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork); $return->setHints($hints); $return->setOwner($document, $this->class->fieldMappings['myConnections']); $return->setInitialized(false); if ($mongoData) { $return->setMongoData($mongoData); } $this->class->reflFields['myConnections']->setValue($document, $return); $hydratedData['myConnections'] = $return; /** @Many */ $mongoData = isset($data['posts']) ? $data['posts'] : null; $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork); $return->setHints($hints); $return->setOwner($document, $this->class->fieldMappings['posts']); $return->setInitialized(false); if ($mongoData) { $return->setMongoData($mongoData); } $this->class->reflFields['posts']->setValue($document, $return); $hydratedData['posts'] = $return; /** @Many */ $mongoData = isset($data['skills']) ? $data['skills'] : null; $return = new \Doctrine\ODM\MongoDB\PersistentCollection(new \Doctrine\Common\Collections\ArrayCollection(), $this->dm, $this->unitOfWork); $return->setHints($hints); $return->setOwner($document, $this->class->fieldMappings['skills']); $return->setInitialized(false); if ($mongoData) { $return->setMongoData($mongoData); } $this->class->reflFields['skills']->setValue($document, $return); $hydratedData['skills'] = $return; return $hydratedData; }
public function hydrate($document, $data, array $hints = array()) { $hydratedData = array(); /** @Field(type="id") */ if (isset($data['_id'])) { $value = $data['_id']; $return = $value instanceof \MongoId ? (string) $value : $value; $this->class->reflFields['id']->setValue($document, $return); $hydratedData['id'] = $return; } /** @Field(type="string") */ if (isset($data['name'])) { $value = $data['name']; $return = (string) $value; $this->class->reflFields['name']->setValue($document, $return); $hydratedData['name'] = $return; } /** @Field(type="string") */ if (isset($data['alias'])) { $value = $data['alias']; $return = (string) $value; $this->class->reflFields['alias']->setValue($document, $return); $hydratedData['alias'] = $return; } /** @Field(type="int") */ if (isset($data['state'])) { $value = $data['state']; $return = (int) $value; $this->class->reflFields['state']->setValue($document, $return); $hydratedData['state'] = $return; } /** @Field(type="boolean") */ if (isset($data['featured'])) { $value = $data['featured']; $return = (bool) $value; $this->class->reflFields['featured']->setValue($document, $return); $hydratedData['featured'] = $return; } /** @Field(type="boolean") */ if (isset($data['menu'])) { $value = $data['menu']; $return = (bool) $value; $this->class->reflFields['menu']->setValue($document, $return); $hydratedData['menu'] = $return; } /** @Field(type="string") */ if (isset($data['description'])) { $value = $data['description']; $return = (string) $value; $this->class->reflFields['description']->setValue($document, $return); $hydratedData['description'] = $return; } /** @Field(type="string") */ if (isset($data['content'])) { $value = $data['content']; $return = (string) $value; $this->class->reflFields['content']->setValue($document, $return); $hydratedData['content'] = $return; } /** @ReferenceOne */ if (isset($data['parent'])) { $reference = $data['parent']; if (isset($this->class->fieldMappings['parent']['simple']) && $this->class->fieldMappings['parent']['simple']) { $className = $this->class->fieldMappings['parent']['targetDocument']; $mongoId = $reference; } else { $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['parent'], $reference); $mongoId = $reference['$id']; } $targetMetadata = $this->dm->getClassMetadata($className); $id = $targetMetadata->getPHPIdentifierValue($mongoId); $return = $this->dm->getReference($className, $id); $this->class->reflFields['parent']->setValue($document, $return); $hydratedData['parent'] = $return; } /** @Field(type="date") */ if (isset($data['created'])) { $value = $data['created']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['created']->setValue($document, clone $return); $hydratedData['created'] = $return; } /** @Field(type="date") */ if (isset($data['updated'])) { $value = $data['updated']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['updated']->setValue($document, clone $return); $hydratedData['updated'] = $return; } /** @ReferenceOne */ if (isset($data['author'])) { $reference = $data['author']; if (isset($this->class->fieldMappings['author']['simple']) && $this->class->fieldMappings['author']['simple']) { $className = $this->class->fieldMappings['author']['targetDocument']; $mongoId = $reference; } else { $className = $this->unitOfWork->getClassNameForAssociation($this->class->fieldMappings['author'], $reference); $mongoId = $reference['$id']; } $targetMetadata = $this->dm->getClassMetadata($className); $id = $targetMetadata->getPHPIdentifierValue($mongoId); $return = $this->dm->getReference($className, $id); $this->class->reflFields['author']->setValue($document, $return); $hydratedData['author'] = $return; } return $hydratedData; }
public function hydrate($document, $data, array $hints = array()) { $hydratedData = array(); /** @Field(type="string") */ if (isset($data['username'])) { $value = $data['username']; $return = (string) $value; $this->class->reflFields['username']->setValue($document, $return); $hydratedData['username'] = $return; } /** @Field(type="string") */ if (isset($data['usernameCanonical'])) { $value = $data['usernameCanonical']; $return = (string) $value; $this->class->reflFields['usernameCanonical']->setValue($document, $return); $hydratedData['usernameCanonical'] = $return; } /** @Field(type="string") */ if (isset($data['email'])) { $value = $data['email']; $return = (string) $value; $this->class->reflFields['email']->setValue($document, $return); $hydratedData['email'] = $return; } /** @Field(type="string") */ if (isset($data['emailCanonical'])) { $value = $data['emailCanonical']; $return = (string) $value; $this->class->reflFields['emailCanonical']->setValue($document, $return); $hydratedData['emailCanonical'] = $return; } /** @Field(type="boolean") */ if (isset($data['enabled'])) { $value = $data['enabled']; $return = (bool) $value; $this->class->reflFields['enabled']->setValue($document, $return); $hydratedData['enabled'] = $return; } /** @Field(type="string") */ if (isset($data['salt'])) { $value = $data['salt']; $return = (string) $value; $this->class->reflFields['salt']->setValue($document, $return); $hydratedData['salt'] = $return; } /** @Field(type="string") */ if (isset($data['password'])) { $value = $data['password']; $return = (string) $value; $this->class->reflFields['password']->setValue($document, $return); $hydratedData['password'] = $return; } /** @Field(type="date") */ if (isset($data['lastLogin'])) { $value = $data['lastLogin']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['lastLogin']->setValue($document, clone $return); $hydratedData['lastLogin'] = $return; } /** @Field(type="boolean") */ if (isset($data['locked'])) { $value = $data['locked']; $return = (bool) $value; $this->class->reflFields['locked']->setValue($document, $return); $hydratedData['locked'] = $return; } /** @Field(type="boolean") */ if (isset($data['expired'])) { $value = $data['expired']; $return = (bool) $value; $this->class->reflFields['expired']->setValue($document, $return); $hydratedData['expired'] = $return; } /** @Field(type="date") */ if (isset($data['expiresAt'])) { $value = $data['expiresAt']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['expiresAt']->setValue($document, clone $return); $hydratedData['expiresAt'] = $return; } /** @Field(type="string") */ if (isset($data['confirmationToken'])) { $value = $data['confirmationToken']; $return = (string) $value; $this->class->reflFields['confirmationToken']->setValue($document, $return); $hydratedData['confirmationToken'] = $return; } /** @Field(type="date") */ if (isset($data['passwordRequestedAt'])) { $value = $data['passwordRequestedAt']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['passwordRequestedAt']->setValue($document, clone $return); $hydratedData['passwordRequestedAt'] = $return; } /** @Field(type="collection") */ if (isset($data['roles'])) { $value = $data['roles']; $return = $value; $this->class->reflFields['roles']->setValue($document, $return); $hydratedData['roles'] = $return; } /** @Field(type="boolean") */ if (isset($data['credentialsExpired'])) { $value = $data['credentialsExpired']; $return = (bool) $value; $this->class->reflFields['credentialsExpired']->setValue($document, $return); $hydratedData['credentialsExpired'] = $return; } /** @Field(type="date") */ if (isset($data['credentialsExpireAt'])) { $value = $data['credentialsExpireAt']; if ($value === null) { $return = null; } else { $return = \Doctrine\ODM\MongoDB\Types\DateType::getDateTime($value); } $this->class->reflFields['credentialsExpireAt']->setValue($document, clone $return); $hydratedData['credentialsExpireAt'] = $return; } return $hydratedData; }
/** * Converts a value to a DateTimeImmutable. * * Supports microseconds. * * @throws InvalidArgumentException if $value is invalid * @param \DateTimeInterface|\MongoDate|int|float $value * @return DateTimeImmutable */ public static function getDateTime($value) { $dateTime = parent::getDateTime($value); return $dateTime instanceof DateTimeImmutable ? $dateTime : self::createImmutableDateTimeFromMutable($dateTime); }