getDocumentById() public method

Tries to find a document with the given id in the identity map of this UnitOfWork.
public getDocumentById ( string $id ) : object | false
$id string The document id to look for.
return object | false Returns the document with the specified id if it exists in this UnitOfWork, FALSE otherwise.
Beispiel #1
0
 /**
  * {@inheritDoc}
  */
 public function findTranslation($className, $id, $locale, $fallback = true)
 {
     try {
         if (UUIDHelper::isUUID($id)) {
             try {
                 $id = $this->session->getNodeByIdentifier($id)->getPath();
             } catch (ItemNotFoundException $e) {
                 return null;
             }
         } elseif (strpos($id, '/') !== 0) {
             $id = '/' . $id;
         }
         $document = $this->unitOfWork->getDocumentById($id);
         if ($document) {
             $this->unitOfWork->validateClassName($document, $className);
             $class = $this->getClassMetadata(get_class($document));
             $this->unitOfWork->doLoadTranslation($document, $class, $locale, $fallback);
             return $document;
         }
         $node = $this->session->getNode($id);
     } catch (PathNotFoundException $e) {
         return null;
     }
     $hints = array('locale' => $locale, 'fallback' => $fallback);
     return $this->unitOfWork->getOrCreateDocument($className, $node, $hints);
 }
 /**
  * Gets a reference to the document identified by the given type and identifier
  * without actually loading it.
  *
  * If partial objects are allowed, this method will return a partial object that only
  * has its identifier populated. Otherwise a proxy is returned that automatically
  * loads itself on first access.
  *
  * @param string $documentName
  * @param string|object $id
  * @return mixed|object The document reference.
  */
 public function getReference($documentName, $id)
 {
     $class = $this->metadataFactory->getMetadataFor($documentName);
     // Check identity map first, if its already in there just return it.
     $document = $this->unitOfWork->getDocumentById($id);
     if ($document) {
         return $document;
     }
     $document = $this->proxyFactory->getProxy($class->name, $id);
     $this->unitOfWork->registerDocument($document, $id);
     return $document;
 }
Beispiel #3
0
 public function testGetDocumentById()
 {
     $user1 = $this->uow->getOrCreateDocument($this->type, $this->createNode('/somepath', 'foo'));
     $user2 = $this->uow->getDocumentById('/somepath', $this->type);
     $this->assertSame($user1, $user2);
 }