public function testDomainsTable()
 {
     if ($this->_conn->getDatabasePlatform()->getName() != "postgresql") {
         $this->markTestSkipped('PostgreSQL only test');
     }
     $table = new \Doctrine\DBAL\Schema\Table("domains");
     $table->addColumn('id', 'integer');
     $table->addColumn('parent_id', 'integer');
     $table->setPrimaryKey(array('id'));
     $table->addForeignKeyConstraint('domains', array('parent_id'), array('id'));
     $this->_conn->getSchemaManager()->createTable($table);
     $table = $this->_conn->getSchemaManager()->listTableDetails('domains');
     $this->assertEquals('domains', $table->getName());
 }
Esempio n. 2
0
 /**
  * @group DDC-2387
  */
 public function testCompositeAssociationKeyDetection()
 {
     $product = new \Doctrine\DBAL\Schema\Table('ddc2387_product');
     $product->addColumn('id', 'integer');
     $product->setPrimaryKey(array('id'));
     $attributes = new \Doctrine\DBAL\Schema\Table('ddc2387_attributes');
     $attributes->addColumn('product_id', 'integer');
     $attributes->addColumn('attribute_name', 'string');
     $attributes->setPrimaryKey(array('product_id', 'attribute_name'));
     $attributes->addForeignKeyConstraint('ddc2387_product', array('product_id'), array('product_id'));
     $metadata = $this->convertToClassMetadata(array($product, $attributes), array());
     $this->assertEquals(ClassMetadataInfo::GENERATOR_TYPE_NONE, $metadata['Ddc2387Attributes']->generatorType);
     $this->assertEquals(ClassMetadataInfo::GENERATOR_TYPE_AUTO, $metadata['Ddc2387Product']->generatorType);
 }
Esempio n. 3
0
 public function testCreateYamlWithForeignKeyFromDatabase()
 {
     if (!$this->_em->getConnection()->getDatabasePlatform()->supportsForeignKeyConstraints()) {
         $this->markTestSkipped('Platform does not support foreign keys.');
     }
     $tableB = new \Doctrine\DBAL\Schema\Table("dbdriver_bar");
     $tableB->addColumn('id', 'integer');
     $tableB->setPrimaryKey(array('id'));
     $this->_sm->dropAndCreateTable($tableB);
     $tableA = new \Doctrine\DBAL\Schema\Table("dbdriver_baz");
     $tableA->addColumn('id', 'integer');
     $tableA->setPrimaryKey(array('id'));
     $tableA->addColumn('bar_id', 'integer');
     $tableA->addForeignKeyConstraint('dbdriver_bar', array('bar_id'), array('id'));
     $this->_sm->dropAndCreateTable($tableA);
     $metadata = $this->extractClassMetadata("DbdriverBaz");
     $this->assertArrayNotHasKey('bar', $metadata->fieldMappings);
     $this->assertArrayHasKey('id', $metadata->fieldMappings);
     $metadata->associationMappings = \array_change_key_case($metadata->associationMappings, \CASE_LOWER);
     $this->assertArrayHasKey('bar', $metadata->associationMappings);
     $this->assertType('Doctrine\\ORM\\Mapping\\OneToOneMapping', $metadata->associationMappings['bar']);
 }
 public function testLoadMetadataWithForeignKeyFromDatabase()
 {
     if (!$this->_em->getConnection()->getDatabasePlatform()->supportsForeignKeyConstraints()) {
         $this->markTestSkipped('Platform does not support foreign keys.');
     }
     $tableB = new \Doctrine\DBAL\Schema\Table("dbdriver_bar");
     $tableB->addColumn('id', 'integer');
     $tableB->setPrimaryKey(array('id'));
     $this->_sm->dropAndCreateTable($tableB);
     $tableA = new \Doctrine\DBAL\Schema\Table("dbdriver_baz");
     $tableA->addColumn('id', 'integer');
     $tableA->setPrimaryKey(array('id'));
     $tableA->addColumn('bar_id', 'integer');
     $tableA->addForeignKeyConstraint('dbdriver_bar', array('bar_id'), array('id'));
     $this->_sm->dropAndCreateTable($tableA);
     $metadatas = $this->extractClassMetadata(array("DbdriverBar", "DbdriverBaz"));
     $this->assertArrayHasKey('DbdriverBaz', $metadatas);
     $bazMetadata = $metadatas['DbdriverBaz'];
     $this->assertArrayNotHasKey('barId', $bazMetadata->fieldMappings, "The foreign Key field should not be inflected as 'barId' field, its an association.");
     $this->assertArrayHasKey('id', $bazMetadata->fieldMappings);
     $bazMetadata->associationMappings = \array_change_key_case($bazMetadata->associationMappings, \CASE_LOWER);
     $this->assertArrayHasKey('bar', $bazMetadata->associationMappings);
     $this->assertEquals(ClassMetadataInfo::MANY_TO_ONE, $bazMetadata->associationMappings['bar']['type']);
 }
 /**
  * @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);
 }
Esempio n. 6
0
 public function testIgnoreManyToManyTableWithoutFurtherForeignKeyDetails()
 {
     $tableB = new \Doctrine\DBAL\Schema\Table("dbdriver_bar");
     $tableB->addColumn('id', 'integer');
     $tableB->setPrimaryKey(array('id'));
     $tableA = new \Doctrine\DBAL\Schema\Table("dbdriver_baz");
     $tableA->addColumn('id', 'integer');
     $tableA->setPrimaryKey(array('id'));
     $tableMany = new \Doctrine\DBAL\Schema\Table("dbdriver_bar_baz");
     $tableMany->addColumn('bar_id', 'integer');
     $tableMany->addColumn('baz_id', 'integer');
     $tableMany->addForeignKeyConstraint('dbdriver_bar', array('bar_id'), array('id'));
     $metadatas = $this->convertToClassMetadata(array($tableA, $tableB), array($tableMany));
     $this->assertEquals(0, count($metadatas['DbdriverBaz']->associationMappings), "no association mappings should be detected.");
 }
Esempio n. 7
0
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     /**
      * get config
      */
     if (isset($_SERVER['TRAVIS_DB'])) {
         static::$config = static::$travis_dbs[$_SERVER['TRAVIS_DB']];
     } else {
         static::$config = (include APPPATH . 'config' . DS . \Fuel::DEVELOPMENT . DS . 'dbdocs.php');
         static::$config = \Arr::get(static::$config, 'test_config.db');
     }
     /**
      * connect to db
      */
     static::$dd = Dbdocs::forge('default', static::$config);
     /**
      * drop views
      */
     krsort(static::$test_views);
     foreach (static::$test_views as $test_view_name => $sql) {
         try {
             //TODO: check view exist
             static::$dd->sm->dropView($test_view_name);
         } catch (\Doctrine\DBAL\DBALException $e) {
             //do nothing
         }
     }
     /**
      * drop tables
      */
     krsort(static::$test_tables);
     foreach (static::$test_tables as $test_table_name => $infos) {
         static::$dd->sm->tablesExist($test_table_name) and static::$dd->sm->dropTable($test_table_name);
     }
     /**
      * create tables
      */
     ksort(static::$test_tables);
     foreach (static::$test_tables as $test_table_name => $infos) {
         $table = new \Doctrine\DBAL\Schema\Table($test_table_name);
         foreach ($infos['columns'] as $column) {
             empty($column['options']) and $column['options'] = array();
             $table->addColumn($column['name'], $column['type'], $column['options']);
         }
         $table->setPrimaryKey($infos['primary_keys']);
         if (!empty($infos['foreign_keys'])) {
             foreach ($infos['foreign_keys'] as $foreign_key) {
                 list($to_table_name, $to_column_name) = explode(".", $foreign_key['to']);
                 $table->addForeignKeyConstraint($to_table_name, array($foreign_key['from']), array($to_column_name));
             }
         }
         static::$dd->sm->createTable($table);
     }
     /**
      * create views
      */
     ksort(static::$test_views);
     foreach (static::$test_views as $test_view_name => $sql) {
         $view = new \Doctrine\DBAL\Schema\View($test_view_name, $sql);
         static::$dd->sm->createView($view);
     }
 }