Skip to content

Commit

Permalink
Merge pull request #6418 from achterin/bugfix/foreign_key_name_change…
Browse files Browse the repository at this point in the history
…_detection_4.0.x

Fix foreign key name change detection
  • Loading branch information
greg0ire committed Jun 2, 2024
2 parents 7ad0ff8 + 3965f43 commit cbd0e9a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
4 changes: 4 additions & 0 deletions src/Schema/Comparator.php
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,10 @@ private function detectRenamedIndexes(array &$addedIndexes, array &$removedIndex

protected function diffForeignKey(ForeignKeyConstraint $key1, ForeignKeyConstraint $key2): bool
{
if (strtolower($key1->getName()) !== strtolower($key2->getName())) {
return true;
}

if (
array_map('strtolower', $key1->getUnquotedLocalColumns())
!== array_map('strtolower', $key2->getUnquotedLocalColumns())
Expand Down
15 changes: 10 additions & 5 deletions tests/Schema/AbstractComparatorTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ public function testCompareColumnCompareCaseInsensitive(): void
self::assertTrue($tableDiff->isEmpty());
}

public function testCompareIndexBasedOnPropertiesNotName(): void
public function testDetectIndexNameChange(): void
{
$tableA = new Table('foo');
$tableA->addColumn('id', Types::INTEGER);
Expand All @@ -363,7 +363,7 @@ public function testCompareIndexBasedOnPropertiesNotName(): void
);
}

public function testCompareForeignKeyBasedOnPropertiesNotName(): void
public function testDetectForeignKeyNameChange(): void
{
$tableA = new Table('foo');
$tableA->addColumn('id', Types::INTEGER);
Expand All @@ -373,9 +373,14 @@ public function testCompareForeignKeyBasedOnPropertiesNotName(): void
$tableB->addColumn('ID', Types::INTEGER);
$tableB->addForeignKeyConstraint('bar', ['id'], ['id'], [], 'bar_constraint');

$tableDiff = $this->comparator->compareTables($tableA, $tableB);

self::assertTrue($tableDiff->isEmpty());
self::assertEquals(
new TableDiff($tableA, [], [], [], [], [], [], [], [], [
new ForeignKeyConstraint(['id'], 'bar', ['id'], 'bar_constraint'),
], [], [
new ForeignKeyConstraint(['id'], 'bar', ['id'], 'foo_constraint'),
]),
$this->comparator->compareTables($tableA, $tableB),
);
}

public function testDetectRenameColumn(): void
Expand Down

0 comments on commit cbd0e9a

Please sign in to comment.