getDocumentDatabase() public method

Returns the MongoDB instance for a class.
public getDocumentDatabase ( string $className ) : Doctrine\MongoDB\Database
$className string The class name.
return Doctrine\MongoDB\Database
Beispiel #1
0
 protected function skipTestIfNotSharded($className)
 {
     $result = $this->dm->getDocumentDatabase($className)->command(['listCommands' => true]);
     if (!$result['ok']) {
         $this->markTestSkipped('Could not check whether server supports sharding');
     }
     if (!array_key_exists('shardCollection', $result['commands'])) {
         $this->markTestSkipped('Test skipped because server does not support sharding');
     }
 }
Beispiel #2
0
 public function generate(DocumentManager $dm, $document)
 {
     $className = get_class($document);
     $db = $dm->getDocumentDatabase($className);
     $query = array('_id' => $document->getEtablissement()->getId());
     $newObj = array('$inc' => array('numeroPassageIncrement' => 1));
     $command = array();
     $command['findandmodify'] = "Etablissement";
     $command['query'] = $query;
     $command['update'] = $newObj;
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     $document->setIdentifiant(sprintf("%s-%s-%05d", $document->getEtablissement()->getIdentifiant(), $document->getDatePrevision()->format('Ymd'), $result['value']['numeroPassageIncrement']));
     $id = sprintf("%s-%s", Passage::PREFIX, $document->getIdentifiant());
     if ($document->getNumeroArchive()) {
         return $id;
     }
     $this->updateNumeroArchive($db);
     $command = array();
     $command['findandmodify'] = 'doctrine_increment_ids';
     $command['query'] = array('_id' => "PassageArchive");
     $command['update'] = array('$inc' => array('current_id' => 1));
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     $document->setNumeroArchive($result['value']['current_id']);
     return $id;
 }
Beispiel #3
0
 public function generate(DocumentManager $dm, $document)
 {
     $className = get_class($document);
     $db = $dm->getDocumentDatabase($className);
     $query = array('_id' => $document->getSociete()->getId());
     $newObj = array('$inc' => array('contratIncrement' => 1));
     $command = array();
     $command['findandmodify'] = "Societe";
     $command['query'] = $query;
     $command['update'] = $newObj;
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     $document->setIdentifiant(sprintf("%s-%s-%04d", $document->getSociete()->getIdentifiant(), $document->getDateCreation()->format('Ymd'), $result['value']['contratIncrement']));
     $id = sprintf("%s-%s", "CONTRAT", $document->getIdentifiant());
     if ($document->getNumeroArchive()) {
         return $id;
     }
     $annee = $document->getDateCreation()->format('y');
     $command = array();
     $command['findandmodify'] = 'doctrine_increment_ids';
     $command['query'] = array('_id' => "ContratArchive");
     $command['update'] = array('$inc' => array($annee => 1));
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     $document->setNumeroArchive(sprintf("%s%04d", $annee, $result['value'][$annee]));
     return $id;
 }
Beispiel #4
0
 /**
  * Create the document database for a mapped class.
  *
  * @param string $documentName
  * @throws \InvalidArgumentException
  */
 public function createDocumentDatabase($documentName)
 {
     $class = $this->dm->getClassMetadata($documentName);
     if ($class->isMappedSuperclass || $class->isEmbeddedDocument) {
         throw new \InvalidArgumentException('Cannot delete document indexes for mapped super classes or embedded documents.');
     }
     $this->dm->getDocumentDatabase($documentName)->execute("function() { return true; }");
 }
Beispiel #5
0
 /**
  * @param $documentName
  *
  * @return array
  */
 private function runShardCollectionCommand($documentName)
 {
     $class = $this->dm->getClassMetadata($documentName);
     $dbName = $this->dm->getDocumentDatabase($documentName)->getName();
     $shardKey = $class->getShardKey();
     $adminDb = $this->dm->getConnection()->selectDatabase('admin');
     $result = $adminDb->command(array('shardCollection' => $dbName . '.' . $class->getCollection(), 'key' => $shardKey['keys']), $shardKey['options']);
     return $result;
 }
Beispiel #6
0
 public function generate(DocumentManager $dm, $document)
 {
     $className = get_class($document);
     $db = $dm->getDocumentDatabase($className);
     if ($document->getIdentifiant()) {
         return "PAIEMENTS-" . $document->getIdentifiant();
     }
     $document->setIdentifiant(sprintf("%s", $document->getDateCreation()->format('Ymd')));
     return "PAIEMENTS-" . $document->getIdentifiant();
 }
Beispiel #7
0
 /**
  * Get Discriminator Values
  *
  * @param \Iterator|array $classNames
  * @return array an array of discriminatorValues (mixed type)
  * @throws \InvalidArgumentException if the number of found collections > 1
  */
 private function getDiscriminatorValues($classNames)
 {
     $discriminatorValues = array();
     $collections = array();
     foreach ($classNames as $className) {
         $class = $this->dm->getClassMetadata($className);
         $discriminatorValues[] = $class->discriminatorValue;
         $key = $this->dm->getDocumentDatabase($className)->getName() . '.' . $class->getCollection();
         $collections[$key] = $key;
     }
     if (count($collections) > 1) {
         throw new \InvalidArgumentException('Documents involved are not all mapped to the same database collection.');
     }
     return $discriminatorValues;
 }
 public function generate(DocumentManager $dm, $document)
 {
     $className = get_class($document);
     $db = $dm->getDocumentDatabase($className);
     $query = array('_id' => $document->getSociete()->getId());
     $newObj = array('$inc' => array('etablissementIncrement' => 1));
     $command = array();
     $command['findandmodify'] = "Societe";
     $command['query'] = $query;
     $command['update'] = $newObj;
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     $document->setIdentifiant(sprintf("%s%03d", $document->getSociete()->getIdentifiant(), $result['value']['etablissementIncrement']));
     return sprintf("%s-%s", "ETABLISSEMENT", $document->getIdentifiant());
 }
 /** @inheritDoc */
 public function generate(DocumentManager $dm, $document)
 {
     $className = get_class($document);
     $db = $dm->getDocumentDatabase($className);
     $coll = $dm->getDocumentCollection($className);
     $query = array('_id' => $coll->getName());
     $newObj = array('$inc' => array('current_id' => 1));
     $command = array();
     $command['findandmodify'] = 'doctrine_increment_ids';
     $command['query'] = $query;
     $command['update'] = $newObj;
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     return $result['value']['current_id'];
 }
Beispiel #10
0
 public function generateNumeroFacture(DocumentManager $dm, $document)
 {
     if ($document->getNumeroFacture()) {
         return;
     }
     $className = get_class($document);
     $db = $dm->getDocumentDatabase($className);
     $annee = $document->getDateFacturation()->format('Y');
     $command = array();
     $command['findandmodify'] = 'doctrine_increment_ids';
     $command['query'] = array('_id' => "FactureArchive");
     $command['update'] = array('$inc' => array($annee => 1));
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     $document->setNumeroFacture(sprintf("%s%04d", $annee, $result['value'][$annee]));
 }
Beispiel #11
0
 public function generate(DocumentManager $dm, $document)
 {
     $className = get_class($document);
     $db = $dm->getDocumentDatabase($className);
     if ($document->getIdentifiant()) {
         return "SOCIETE-" . $document->getIdentifiant();
     }
     $command = array();
     $command['findandmodify'] = 'doctrine_increment_ids';
     $command['query'] = array('_id' => "Societe");
     $command['update'] = array('$inc' => array('current_id' => 1));
     $command['upsert'] = true;
     $command['new'] = true;
     $result = $db->command($command);
     $identifiant = sprintf("%06d", $result['value']['current_id']);
     $document->setIdentifiant($identifiant);
     return "SOCIETE-" . $document->getIdentifiant();
 }
 public function getDocumentDatabase($documentName)
 {
     return isset($this->documentDatabases[$documentName]) ? $this->documentDatabases[$documentName] : parent::getDocumentDatabase($documentName);
 }
 /**
  * {@inheritdoc}
  */
 public function count()
 {
     $result = $this->documentManager->getDocumentDatabase($this->productClass)->command(['aggregate' => 'pim_catalog_product', 'pipeline' => [['$project' => ['values' => 1]], ['$unwind' => '$values'], ['$group' => ['_id' => '$values._id']], ['$group' => ['_id' => 'DistinctCount', 'count' => ['$sum' => 1]]]]]);
     return $result['result'][0]['count'];
 }