Commit b9d11445 authored by Benjamin Eberlei's avatar Benjamin Eberlei

DBAL-132 - Make Table::addUnnamedForeignKeyConstraint() generate a name based...

DBAL-132 - Make Table::addUnnamedForeignKeyConstraint() generate a name based on the input, @deprecated addUnnamedForeignKeyConstraint and addNamedForeignKeyConstraint.
parent 826f3f84
...@@ -288,12 +288,13 @@ class Table extends AbstractAsset ...@@ -288,12 +288,13 @@ class Table extends AbstractAsset
* @param array $localColumns * @param array $localColumns
* @param array $foreignColumns * @param array $foreignColumns
* @param array $options * @param array $options
* @param string $constraintName
* @return Table * @return Table
*/ */
public function addForeignKeyConstraint($foreignTable, array $localColumnNames, array $foreignColumnNames, array $options=array()) public function addForeignKeyConstraint($foreignTable, array $localColumnNames, array $foreignColumnNames, array $options=array(), $constraintName = null)
{ {
$name = $this->_generateIdentifierName(array_merge((array)$this->getName(), $localColumnNames), "fk", $this->_getMaxIdentifierLength()); $constraintName = $constraintName ?: $this->_generateIdentifierName(array_merge((array)$this->getName(), $localColumnNames), "fk", $this->_getMaxIdentifierLength());
return $this->addNamedForeignKeyConstraint($name, $foreignTable, $localColumnNames, $foreignColumnNames, $options); return $this->addNamedForeignKeyConstraint($constraintName, $foreignTable, $localColumnNames, $foreignColumnNames, $options);
} }
/** /**
...@@ -301,6 +302,7 @@ class Table extends AbstractAsset ...@@ -301,6 +302,7 @@ class Table extends AbstractAsset
* *
* Name is to be generated by the database itsself. * Name is to be generated by the database itsself.
* *
* @deprecated Use {@link addForeignKeyConstraint}
* @param Table $foreignTable * @param Table $foreignTable
* @param array $localColumns * @param array $localColumns
* @param array $foreignColumns * @param array $foreignColumns
...@@ -309,12 +311,13 @@ class Table extends AbstractAsset ...@@ -309,12 +311,13 @@ class Table extends AbstractAsset
*/ */
public function addUnnamedForeignKeyConstraint($foreignTable, array $localColumnNames, array $foreignColumnNames, array $options=array()) public function addUnnamedForeignKeyConstraint($foreignTable, array $localColumnNames, array $foreignColumnNames, array $options=array())
{ {
return $this->addNamedForeignKeyConstraint(null, $foreignTable, $localColumnNames, $foreignColumnNames, $options); return $this->addForeignKeyConstraint($foreignTable, $localColumnNames, $foreignColumnNames, $options);
} }
/** /**
* Add a foreign key constraint with a given name * Add a foreign key constraint with a given name
* *
* @deprecated Use {@link addForeignKeyConstraint}
* @param string $name * @param string $name
* @param Table $foreignTable * @param Table $foreignTable
* @param array $localColumns * @param array $localColumns
......
...@@ -47,4 +47,21 @@ class MySQLSchemaTest extends \PHPUnit_Framework_TestCase ...@@ -47,4 +47,21 @@ class MySQLSchemaTest extends \PHPUnit_Framework_TestCase
), $sql ), $sql
); );
} }
/**
* @group DBAL-132
*/
public function testGenerateForeignKeySQL()
{
$tableOld = new Table("test");
$tableOld->addColumn('foo_id', 'integer');
$tableOld->addUnnamedForeignKeyConstraint('test_foreign', array('foo_id'), array('foo_id'));
$sqls = array();
foreach ($tableOld->getForeignKeys() AS $fk) {
$sqls[] = $this->platform->getCreateForeignKeySQL($fk, $tableOld);
}
$this->assertEquals(array("ALTER TABLE test ADD CONSTRAINT FK_D87F7E0C8E48560F FOREIGN KEY (foo_id) REFERENCES test_foreign(foo_id)"), $sqls);
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment