/**
  * @group DDC-3590
  * @group 1316
  */
 public function testGetJoinTableName()
 {
     $em = $this->_getTestEntityManager();
     $metadata = $em->getClassMetadata(NonPublicSchemaUser::CLASSNAME);
     /* @var $platform \Doctrine\DBAL\Platforms\AbstractPlatform */
     $strategy = new DefaultQuoteStrategy();
     $platform = $this->getMockForAbstractClass('Doctrine\\DBAL\\Platforms\\AbstractPlatform');
     $this->assertSame('readers.author_reader', $strategy->getJoinTableName($metadata->associationMappings['readers'], $metadata, $platform));
 }
 public function testReferencedJoinColumnName()
 {
     $cm = $this->createClassMetadata('Doctrine\\Tests\\Models\\DDC117\\DDC117ArticleDetails');
     $cm->mapOneToOne(array('id' => true, 'fieldName' => 'article', 'targetEntity' => 'Doctrine\\Tests\\Models\\DDC117\\DDC117Article', 'joinColumns' => array(array('name' => '`article`'))));
     $joinColumn = $cm->associationMappings['article']['joinColumns'][0];
     $this->assertEquals('"id"', $this->strategy->getReferencedJoinColumnName($joinColumn, $cm, $this->platform));
 }
 public function testGetSequenceName()
 {
     $class = $this->createClassMetadata('Doctrine\\Tests\\Models\\CMS\\CmsUser');
     $definition = array('sequenceName' => 'user_id_seq', 'allocationSize' => 1, 'initialValue' => 2);
     $class->setSequenceGeneratorDefinition($definition);
     $this->assertEquals('user_id_seq', $this->strategy->getSequenceName($definition, $class, $this->platform));
 }
 /**
  * Get list of Diamante tables to purge data from
  *
  * @return array
  */
 protected function getTablesList()
 {
     $entitiesMetadata = array($this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Branch::getClassName()), $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\BranchEmailConfiguration::getClassName()), $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Ticket::getClassName()), $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Comment::getClassName()), $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Attachment::getClassName()), $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\TicketHistory::getClassName()), $this->entityManager->getClassMetadata('\\Oro\\Bundle\\TagBundle\\Entity\\Tag'), $this->entityManager->getClassMetadata('\\Oro\\Bundle\\TagBundle\\Entity\\Tagging'));
     $toPurge = array();
     $quoteStrategy = new DefaultQuoteStrategy();
     /** @var $entity \Doctrine\ORM\Mapping\ClassMetadata */
     foreach ($entitiesMetadata as $entity) {
         $tableName = $entity->getTableName();
         $toPurge[] = $tableName;
         foreach ($entity->getAssociationMappings() as $assoc) {
             if (isset($assoc['joinTable'])) {
                 $toPurge[] = $quoteStrategy->getJoinTableName($assoc, $entity, $this->dbPlatform);
             }
         }
     }
     return $toPurge;
 }
Example #5
0
 /**
  * @param ClassMetadata $meta
  *
  * @return string
  * @throws \Doctrine\DBAL\DBALException
  */
 private function getRevisionSQL($meta)
 {
     if (!isset($this->revisionSQL[$meta->name])) {
         $placeholders = ['?', '?'];
         $values = ['revision_id', 'rev_type'];
         $updates = ['rev_type'];
         $tableName = $this->getTableName($meta);
         $fields = array();
         foreach ($meta->associationMappings as $field => $assoc) {
             if ($meta->isInheritanceTypeJoined() && $meta->isInheritedAssociation($field)) {
                 continue;
             }
             if (!$this->annotationReader->isPropertyRevised($meta->name, $field)) {
                 continue;
             }
             if (($assoc['type'] & ClassMetadata::TO_ONE) > 0 && $assoc['isOwningSide']) {
                 foreach ($assoc['targetToSourceKeyColumns'] as $sourceCol) {
                     $fields[$sourceCol] = true;
                     $values[] = $sourceCol;
                     $placeholders[] = '?';
                 }
             }
         }
         foreach ($meta->fieldNames as $field) {
             if (array_key_exists($field, $fields)) {
                 continue;
             }
             if ($meta->isInheritanceTypeJoined() && $meta->isInheritedField($field) && !$meta->isIdentifier($field)) {
                 continue;
             }
             if (!$this->annotationReader->isPropertyRevised($meta->name, $field) && !$meta->isIdentifier($field)) {
                 continue;
             }
             $type = Type::getType($meta->fieldMappings[$field]['type']);
             $placeholders[] = !empty($meta->fieldMappings[$field]['requireSQLConversion']) ? $type->convertToDatabaseValueSQL('?', $this->platform) : '?';
             $quoteStrategy = new DefaultQuoteStrategy();
             $values[] = $quoteStrategy->getColumnName($field, $meta, $this->platform);
             $updates[] = $quoteStrategy->getColumnName($field, $meta, $this->platform);
         }
         if ($meta->isInheritanceTypeJoined() && $meta->rootEntityName == $meta->name) {
             $values[] = $meta->discriminatorColumn['name'];
             $updates[] = $meta->discriminatorColumn['name'];
             $placeholders[] = '?';
         }
         $sql = "INSERT INTO " . $tableName . " (" . implode(", ", $values);
         $sql .= ") VALUES (" . implode(", ", $placeholders) . ")";
         $sql .= " ON DUPLICATE KEY UPDATE ";
         array_walk($updates, function (&$value) {
             $value = sprintf("%s=VALUES(%s)", $value, $value);
         });
         $sql .= implode(", ", $updates);
         $this->revisionSQL[$meta->name] = $sql;
     }
     return $this->revisionSQL[$meta->name];
 }