|
|
|
|
@ -30,6 +30,7 @@ use Doctrine\DBAL\Schema\ColumnDiff; |
|
|
|
|
use Doctrine\DBAL\Schema\Index; |
|
|
|
|
use Doctrine\DBAL\Schema\Schema; |
|
|
|
|
use Doctrine\DBAL\Schema\Table; |
|
|
|
|
use Doctrine\DBAL\Schema\ForeignKeyConstraint; |
|
|
|
|
|
|
|
|
|
class OracleMigrator extends NoCheckMigrator { |
|
|
|
|
|
|
|
|
|
@ -81,6 +82,27 @@ class OracleMigrator extends NoCheckMigrator { |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Quote an ForeignKeyConstraint's name but changing the name requires recreating |
|
|
|
|
* the ForeignKeyConstraint instance and copying over all properties. |
|
|
|
|
* |
|
|
|
|
* @param ForeignKeyConstraint $fkc old fkc |
|
|
|
|
* @return ForeignKeyConstraint new fkc instance with new name |
|
|
|
|
*/ |
|
|
|
|
protected function quoteForeignKeyConstraint($fkc) { |
|
|
|
|
return new ForeignKeyConstraint( |
|
|
|
|
array_map(function($columnName) { |
|
|
|
|
return $this->connection->quoteIdentifier($columnName); |
|
|
|
|
}, $fkc->getLocalColumns()), |
|
|
|
|
$this->connection->quoteIdentifier($fkc->getForeignTableName()), |
|
|
|
|
array_map(function($columnName) { |
|
|
|
|
return $this->connection->quoteIdentifier($columnName); |
|
|
|
|
}, $fkc->getForeignColumns()), |
|
|
|
|
$fkc->getName(), |
|
|
|
|
$fkc->getOptions() |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param Schema $targetSchema |
|
|
|
|
* @param \Doctrine\DBAL\Connection $connection |
|
|
|
|
@ -100,7 +122,9 @@ class OracleMigrator extends NoCheckMigrator { |
|
|
|
|
array_map(function(Index $index) { |
|
|
|
|
return $this->quoteIndex($index); |
|
|
|
|
}, $table->getIndexes()), |
|
|
|
|
$table->getForeignKeys(), |
|
|
|
|
array_map(function(ForeignKeyConstraint $fck) { |
|
|
|
|
return $this->quoteForeignKeyConstraint($fck); |
|
|
|
|
}, $table->getForeignKeys()), |
|
|
|
|
0, |
|
|
|
|
$table->getOptions() |
|
|
|
|
); |
|
|
|
|
@ -158,9 +182,17 @@ class OracleMigrator extends NoCheckMigrator { |
|
|
|
|
return $this->quoteIndex($index); |
|
|
|
|
}, $tableDiff->renamedIndexes); |
|
|
|
|
|
|
|
|
|
// TODO handle $tableDiff->addedForeignKeys |
|
|
|
|
// TODO handle $tableDiff->changedForeignKeys |
|
|
|
|
// TODO handle $tableDiff->removedForeignKeys |
|
|
|
|
$tableDiff->addedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) { |
|
|
|
|
return $this->quoteForeignKeyConstraint($fkc); |
|
|
|
|
}, $tableDiff->addedForeignKeys); |
|
|
|
|
|
|
|
|
|
$tableDiff->changedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) { |
|
|
|
|
return $this->quoteForeignKeyConstraint($fkc); |
|
|
|
|
}, $tableDiff->changedForeignKeys); |
|
|
|
|
|
|
|
|
|
$tableDiff->removedForeignKeys = array_map(function(ForeignKeyConstraint $fkc) { |
|
|
|
|
return $this->quoteForeignKeyConstraint($fkc); |
|
|
|
|
}, $tableDiff->removedForeignKeys); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $schemaDiff; |
|
|
|
|
|