Doctrine\ODM\MongoDB\UnitOfWork::persistNew PHP Method

persistNew() private method

private persistNew ( ClassMetadata $class, object $document )
$class Doctrine\ODM\MongoDB\Mapping\ClassMetadata
$document object
    private function persistNew(ClassMetadata $class, $document)
    {
        $this->lifecycleEventManager->prePersist($class, $document);
        $oid = spl_object_hash($document);
        $upsert = false;
        if ($class->identifier) {
            $idValue = $class->getIdentifierValue($document);
            $upsert = !$class->isEmbeddedDocument && $idValue !== null;
            if ($class->generatorType === ClassMetadata::GENERATOR_TYPE_NONE && $idValue === null) {
                throw new \InvalidArgumentException(sprintf('%s uses NONE identifier generation strategy but no identifier was provided when persisting.', get_class($document)));
            }
            if ($class->generatorType === ClassMetadata::GENERATOR_TYPE_AUTO && $idValue !== null && !\MongoId::isValid($idValue)) {
                throw new \InvalidArgumentException(sprintf('%s uses AUTO identifier generation strategy but provided identifier is not valid MongoId.', get_class($document)));
            }
            if ($class->generatorType !== ClassMetadata::GENERATOR_TYPE_NONE && $idValue === null) {
                $idValue = $class->idGenerator->generate($this->dm, $document);
                $idValue = $class->getPHPIdentifierValue($class->getDatabaseIdentifierValue($idValue));
                $class->setIdentifierValue($document, $idValue);
            }
            $this->documentIdentifiers[$oid] = $idValue;
        } else {
            // this is for embedded documents without identifiers
            $this->documentIdentifiers[$oid] = $oid;
        }
        $this->documentStates[$oid] = self::STATE_MANAGED;
        if ($upsert) {
            $this->scheduleForUpsert($class, $document);
        } else {
            $this->scheduleForInsert($class, $document);
        }
    }
UnitOfWork