public function testLoadMetadataFromDatabaseDetail() { if (!$this->_em->getConnection()->getDatabasePlatform()->supportsForeignKeyConstraints()) { $this->markTestSkipped('Platform does not support foreign keys.'); } $table = new \Doctrine\DBAL\Schema\Table("dbdriver_foo"); $table->addColumn('id', 'integer', array('unsigned' => true)); $table->setPrimaryKey(array('id')); $table->addColumn('column_unsigned', 'integer', array('unsigned' => true)); $table->addColumn('column_comment', 'string', array('comment' => 'test_comment')); $table->addColumn('column_default', 'string', array('default' => 'test_default')); $table->addColumn('column_decimal', 'decimal', array('precision' => 4, 'scale' => 3)); $table->addColumn('column_index1', 'string'); $table->addColumn('column_index2', 'string'); $table->addIndex(array('column_index1', 'column_index2'), 'index1'); $table->addColumn('column_unique_index1', 'string'); $table->addColumn('column_unique_index2', 'string'); $table->addUniqueIndex(array('column_unique_index1', 'column_unique_index2'), 'unique_index1'); $this->_sm->dropAndCreateTable($table); $metadatas = $this->extractClassMetadata(array("DbdriverFoo")); $this->assertArrayHasKey('DbdriverFoo', $metadatas); $metadata = $metadatas['DbdriverFoo']; $this->assertArrayHasKey('id', $metadata->fieldMappings); $this->assertEquals('id', $metadata->fieldMappings['id']['fieldName']); $this->assertEquals('id', strtolower($metadata->fieldMappings['id']['columnName'])); $this->assertEquals('integer', (string) $metadata->fieldMappings['id']['type']); // FIXME: Condition here is fugly. // NOTE: PostgreSQL and SQL SERVER do not support UNSIGNED integer if (!$this->_em->getConnection()->getDatabasePlatform() instanceof PostgreSqlPlatform and !$this->_em->getConnection()->getDatabasePlatform() instanceof SQLServerPlatform) { $this->assertArrayHasKey('columnUnsigned', $metadata->fieldMappings); $this->assertTrue($metadata->fieldMappings['columnUnsigned']['options']['unsigned']); } $this->assertArrayHasKey('columnComment', $metadata->fieldMappings); $this->assertEquals('test_comment', $metadata->fieldMappings['columnComment']['options']['comment']); $this->assertArrayHasKey('columnDefault', $metadata->fieldMappings); $this->assertEquals('test_default', $metadata->fieldMappings['columnDefault']['options']['default']); $this->assertArrayHasKey('columnDecimal', $metadata->fieldMappings); $this->assertEquals(4, $metadata->fieldMappings['columnDecimal']['precision']); $this->assertEquals(3, $metadata->fieldMappings['columnDecimal']['scale']); $this->assertTrue(!empty($metadata->table['indexes']['index1']['columns'])); $this->assertEquals(array('column_index1', 'column_index2'), $metadata->table['indexes']['index1']['columns']); $this->assertTrue(!empty($metadata->table['uniqueConstraints']['unique_index1']['columns'])); $this->assertEquals(array('column_unique_index1', 'column_unique_index2'), $metadata->table['uniqueConstraints']['unique_index1']['columns']); }
/** * @group DDC-887 */ public function testUpdateSchemaWithForeignKeyRenaming() { if (!$this->_sm->getDatabasePlatform()->supportsForeignKeyConstraints()) { $this->markTestSkipped('This test is only supported on platforms that have foreign keys.'); } $table = new \Doctrine\DBAL\Schema\Table('test_fk_base'); $table->addColumn('id', 'integer'); $table->setPrimaryKey(array('id')); $tableFK = new \Doctrine\DBAL\Schema\Table('test_fk_rename'); $tableFK->setSchemaConfig($this->_sm->createSchemaConfig()); $tableFK->addColumn('id', 'integer'); $tableFK->addColumn('fk_id', 'integer'); $tableFK->setPrimaryKey(array('id')); $tableFK->addIndex(array('fk_id'), 'fk_idx'); $tableFK->addForeignKeyConstraint('test_fk_base', array('fk_id'), array('id')); $this->_sm->createTable($table); $this->_sm->createTable($tableFK); $tableFKNew = new \Doctrine\DBAL\Schema\Table('test_fk_rename'); $tableFKNew->setSchemaConfig($this->_sm->createSchemaConfig()); $tableFKNew->addColumn('id', 'integer'); $tableFKNew->addColumn('rename_fk_id', 'integer'); $tableFKNew->setPrimaryKey(array('id')); $tableFKNew->addIndex(array('rename_fk_id'), 'fk_idx'); $tableFKNew->addForeignKeyConstraint('test_fk_base', array('rename_fk_id'), array('id')); $c = new \Doctrine\DBAL\Schema\Comparator(); $tableDiff = $c->diffTable($tableFK, $tableFKNew); $this->_sm->alterTable($tableDiff); }
protected function createTableSchema() { $table = new \Doctrine\DBAL\Schema\Table('points'); $table->addColumn('id', 'integer', array('notnull' => true)); $table->addColumn('text', 'text', array('notnull' => true)); $table->addColumn('tsvector', 'tsvector', array('notnull' => true)); $table->addColumn('geometry', 'geometry', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'GEOMETRY', 'srid' => 0)); $table->addColumn('point', 'geometry', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINT', 'srid' => 0)); $table->addColumn('point_2d', 'geometry', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINT', 'srid' => 3785)); $table->addColumn('point_3dz', 'geometry', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINTZ', 'srid' => 3785)); $table->addColumn('point_3dm', 'geometry', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINTM', 'srid' => 3785)); $table->addColumn('point_4d', 'geometry', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINTZM', 'srid' => 3785)); $table->addColumn('point_2d_nullable', 'geometry', array('notnull' => false))->setCustomSchemaOptions(array('geometry_type' => 'POINT', 'srid' => 3785)); $table->addColumn('point_2d_nosrid', 'geometry', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINT', 'srid' => 0)); $table->addColumn('geography', 'geography', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'GEOMETRY', 'srid' => 4326)); $table->addColumn('point_geography_2d', 'geography', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINT', 'srid' => 4326)); $table->addColumn('point_geography_2d_srid', 'geography', array('notnull' => true))->setCustomSchemaOptions(array('geometry_type' => 'POINT', 'srid' => 4326)); $table->addIndex(array('text'), 'idx_text'); $table->addIndex(array('tsvector'), 'idx_text_gist'); $table->addIndex(array('point'), null, array('SPATIAL')); $table->addIndex(array('point_2d'), null, array('SPATIAL')); $table->addIndex(array('point_3dz'), null, array('SPATIAL')); $table->addIndex(array('point_3dm'), null, array('SPATIAL')); $table->addIndex(array('point_4d'), null, array('SPATIAL')); $table->addIndex(array('point_2d_nullable'), null, array('SPATIAL')); $table->addIndex(array('point_2d_nosrid'), null, array('SPATIAL')); $table->addIndex(array('point_geography_2d'), null, array('SPATIAL')); $table->addIndex(array('point_geography_2d_srid'), null, array('SPATIAL')); $table->setPrimaryKey(array('id')); return $table; }