/** * @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; }
/** * @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]; }