예제 #1
0
 /**
  * Store document to pool
  *
  * @param array $document
  * @return \Sokil\Mongo\Collection
  */
 public function addDocumentToDocumentPool(Document $document)
 {
     $documentId = (string) $document->getId();
     if (!isset($this->documentPool[$documentId])) {
         $this->documentPool[$documentId] = $document;
     } else {
         // merging because document after
         // load and before getting in second place may be changed
         // and this changes must be preserved:
         //
         // 1. Document loads and modifies in current session
         // 2. Document loads modified in another session
         // 3. Document loads once again in current session. Changes from stage 2 merges as unmodified
         $this->documentPool[$documentId]->mergeUnmodified($document->toArray());
     }
     return $this;
 }