/**
  * @param Table $localTable
  * @param ForeignKeyConstraint $fkConstraint
  */
 public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
 {
     $namespace = $this->getNamespace($localTable);
     if ($this->_platform->supportsForeignKeyConstraints()) {
         $this->_createFkConstraintQueries[$namespace] = array_merge($this->_createFkConstraintQueries[$namespace], (array) $this->_platform->getCreateForeignKeySQL($fkConstraint, $localTable));
     }
 }
 /**
  * @param Table $localTable
  * @param ForeignKeyConstraint $fkConstraint
  */
 public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
 {
     // Append the foreign key constraints SQL
     if ($this->_platform->supportsForeignKeyConstraints()) {
         $this->_createFkConstraintQueries = array_merge($this->_createFkConstraintQueries, (array) $this->_platform->getCreateForeignKeySQL($fkConstraint, $localTable->getName()));
     }
 }
예제 #3
0
 /**
  * @param  string $tableName
  * @return Table
  */
 public function listTableDetails($tableName)
 {
     $columns = $this->listTableColumns($tableName);
     $foreignKeys = array();
     if ($this->_platform->supportsForeignKeyConstraints()) {
         $foreignKeys = $this->listTableForeignKeys($tableName);
     }
     $indexes = $this->listTableIndexes($tableName);
     return new Table($tableName, $columns, $indexes, $foreignKeys, false, array());
 }
예제 #4
0
 public function testGeneratesForeignKeySqlOnlyWhenSupportingForeignKeys()
 {
     $fk = new \Doctrine\DBAL\Schema\ForeignKeyConstraint(array('fk_name'), 'foreign', array('id'), 'constraint_fk');
     if ($this->_platform->supportsForeignKeyConstraints()) {
         $this->assertInternalType('string', $this->_platform->getCreateForeignKeySQL($fk, 'test'));
     } else {
         $this->setExpectedException('Doctrine\\DBAL\\DBALException');
         $this->_platform->getCreateForeignKeySQL($fk, 'test');
     }
 }
 /**
  * @param  string $tableName
  * @return Table
  */
 public function listTableDetails($tableName)
 {
     $columns = $this->listTableColumns($tableName);
     $foreignKeys = array();
     if ($this->_platform->supportsForeignKeyConstraints()) {
         $foreignKeys = $this->listTableForeignKeys($tableName);
     }
     $indexes = $this->listTableIndexes($tableName);
     $idGeneratorType = Table::ID_NONE;
     foreach ($columns as $column) {
         if ($column->hasPlatformOption('autoincrement') && $column->getPlatformOption('autoincrement')) {
             $idGeneratorType = Table::ID_IDENTITY;
         }
     }
     return new Table($tableName, $columns, $indexes, $foreignKeys, $idGeneratorType, array());
 }
예제 #6
0
 /**
  * @param \Doctrine\DBAL\Platforms\AbstractPlatform $platform
  * @param boolean                                   $saveMode
  *
  * @return array
  */
 protected function _toSql(AbstractPlatform $platform, $saveMode = false)
 {
     $sql = array();
     if ($platform->supportsSchemas()) {
         foreach ($this->newNamespaces as $newNamespace) {
             $sql[] = $platform->getCreateSchemaSQL($newNamespace);
         }
     }
     if ($platform->supportsForeignKeyConstraints() && $saveMode == false) {
         foreach ($this->orphanedForeignKeys as $orphanedForeignKey) {
             $sql[] = $platform->getDropForeignKeySQL($orphanedForeignKey, $orphanedForeignKey->getLocalTableName());
         }
     }
     if ($platform->supportsSequences() == true) {
         foreach ($this->changedSequences as $sequence) {
             $sql[] = $platform->getAlterSequenceSQL($sequence);
         }
         if ($saveMode === false) {
             foreach ($this->removedSequences as $sequence) {
                 $sql[] = $platform->getDropSequenceSQL($sequence);
             }
         }
         foreach ($this->newSequences as $sequence) {
             $sql[] = $platform->getCreateSequenceSQL($sequence);
         }
     }
     $foreignKeySql = array();
     foreach ($this->newTables as $table) {
         $sql = array_merge($sql, $platform->getCreateTableSQL($table, AbstractPlatform::CREATE_INDEXES));
         if ($platform->supportsForeignKeyConstraints()) {
             foreach ($table->getForeignKeys() as $foreignKey) {
                 $foreignKeySql[] = $platform->getCreateForeignKeySQL($foreignKey, $table);
             }
         }
     }
     $sql = array_merge($sql, $foreignKeySql);
     if ($saveMode === false) {
         foreach ($this->removedTables as $table) {
             $sql[] = $platform->getDropTableSQL($table);
         }
     }
     foreach ($this->changedTables as $tableDiff) {
         $sql = array_merge($sql, $platform->getAlterTableSQL($tableDiff));
     }
     return $sql;
 }
 /**
  * {@inheritdoc}
  */
 public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
 {
     if ($this->platform->supportsForeignKeyConstraints()) {
         $this->createFkConstraintQueries = array_merge($this->createFkConstraintQueries, (array) $this->platform->getCreateForeignKeySQL($fkConstraint, $localTable));
     }
 }