Skip to content

Commit f093c09

Browse files
committed
Return table-scoped object sets as lists
1 parent 7b0f488 commit f093c09

File tree

4 files changed

+26
-40
lines changed

4 files changed

+26
-40
lines changed

UPGRADE.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ awareness about deprecated code.
88

99
# Upgrade to 5.0
1010

11+
## BC BREAK: Changes in `Table` method return types
12+
13+
The following `Table` methods no longer return associative arrays of objects. Instead, they return lists:
14+
- `Table::getIndexes()`
15+
- `Table::getUniqueConstraints()`
16+
- `Table::getForeignKeys()`
17+
1118
## BC BREAK: Changes in `Sequence` API
1219

1320
The following `Sequence` methods have been removed:

src/Platforms/SQLitePlatform.php

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Doctrine\DBAL\Connection;
88
use Doctrine\DBAL\Platforms\Exception\NotSupported;
99
use Doctrine\DBAL\Platforms\Exception\UnsupportedTableDefinition;
10+
use Doctrine\DBAL\Schema\Collections\UnqualifiedNamedObjectSet;
1011
use Doctrine\DBAL\Schema\Column;
1112
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
1213
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
@@ -799,25 +800,25 @@ private function getDiffColumnNameMap(TableDiff $diff): array
799800
private function getIndexesInAlteredTable(TableDiff $diff): array
800801
{
801802
$oldTable = $diff->getOldTable();
802-
$indexes = $oldTable->getIndexes();
803+
$indexes = new UnqualifiedNamedObjectSet(...$oldTable->getIndexes());
803804
$nameMap = $this->getDiffColumnNameMap($diff);
804805

805806
foreach ($indexes as $key => $index) {
806-
$indexName = $index->getObjectName()->getIdentifier()->getValue();
807+
$indexName = $index->getObjectName();
807808
foreach ($diff->getRenamedIndexes() as $oldIndexName => $renamedIndex) {
808-
if (strtolower($indexName) !== strtolower($oldIndexName)) {
809+
if (strtolower($indexName->getIdentifier()->getValue()) !== strtolower($oldIndexName)) {
809810
continue;
810811
}
811812

812-
unset($indexes[$key]);
813+
$indexes->remove($indexName);
813814
}
814815

815816
$changed = false;
816817
$columnNames = [];
817818
foreach ($index->getIndexedColumns() as $column) {
818819
$name = $column->getColumnName()->getIdentifier()->getValue();
819820
if (! isset($nameMap[$name])) {
820-
unset($indexes[$key]);
821+
$indexes->remove($indexName);
821822
continue 2;
822823
}
823824

@@ -833,19 +834,14 @@ private function getIndexesInAlteredTable(TableDiff $diff): array
833834
continue;
834835
}
835836

836-
$indexes[$key] = $index->edit()
837+
$indexes->modify($indexName, static fn (Index $index): Index => $index
838+
->edit()
837839
->setUnquotedColumnNames(...$columnNames)
838-
->create();
840+
->create());
839841
}
840842

841843
foreach ($diff->getDroppedIndexes() as $index) {
842-
$indexKey = strtolower(
843-
$index->getObjectName()
844-
->getIdentifier()
845-
->getValue(),
846-
);
847-
848-
unset($indexes[$indexKey]);
844+
$indexes->remove($index->getObjectName());
849845
}
850846

851847
foreach (
@@ -854,16 +850,10 @@ private function getIndexesInAlteredTable(TableDiff $diff): array
854850
$diff->getRenamedIndexes(),
855851
) as $index
856852
) {
857-
$indexKey = strtolower(
858-
$index->getObjectName()
859-
->getIdentifier()
860-
->getValue(),
861-
);
862-
863-
$indexes[$indexKey] = $index;
853+
$indexes->add($index);
864854
}
865855

866-
return $indexes;
856+
return $indexes->toList();
867857
}
868858

869859
/** @return array<ForeignKeyConstraint> */

src/Schema/Table.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -683,30 +683,30 @@ public function getIndex(string $name): Index
683683
return $this->indexes[$this->getObjectKey($parsedName)];
684684
}
685685

686-
/** @return array<string, Index> */
686+
/** @return list<Index> */
687687
public function getIndexes(): array
688688
{
689-
return $this->indexes;
689+
return array_values($this->indexes);
690690
}
691691

692692
/**
693693
* Returns the unique constraints.
694694
*
695-
* @return array<string, UniqueConstraint>
695+
* @return list<UniqueConstraint>
696696
*/
697697
public function getUniqueConstraints(): array
698698
{
699-
return $this->uniqueConstraints;
699+
return array_values($this->uniqueConstraints);
700700
}
701701

702702
/**
703703
* Returns the foreign key constraints.
704704
*
705-
* @return array<string, ForeignKeyConstraint>
705+
* @return list<ForeignKeyConstraint>
706706
*/
707707
public function getForeignKeys(): array
708708
{
709-
return $this->foreignKeyConstraints;
709+
return array_values($this->foreignKeyConstraints);
710710
}
711711

712712
public function hasOption(string $name): bool

tests/Schema/TableTest.php

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
use PHPUnit\Framework\TestCase;
3333
use ValueError;
3434

35-
use function array_keys;
3635
use function array_values;
3736

3837
class TableTest extends TestCase
@@ -1520,17 +1519,7 @@ public function testUniqueConstraintWithEmptyName(): void
15201519
->setUniqueConstraints(...$uniqueConstraints)
15211520
->create();
15221521

1523-
$constraints = $table->getUniqueConstraints();
1524-
1525-
self::assertCount(2, $constraints);
1526-
1527-
$constraintNames = array_keys($constraints);
1528-
1529-
self::assertSame('fk_d87f7e0c341ce00bad15b1b1', $constraintNames[0]);
1530-
self::assertSame('fk_d87f7e0cda12812744761484', $constraintNames[1]);
1531-
1532-
self::assertSame($uniqueConstraints[0], $constraints['fk_d87f7e0c341ce00bad15b1b1']);
1533-
self::assertSame($uniqueConstraints[1], $constraints['fk_d87f7e0cda12812744761484']);
1522+
self::assertSame($uniqueConstraints, $table->getUniqueConstraints());
15341523
}
15351524

15361525
public function testDropUniqueConstraint(): void

0 commit comments

Comments
 (0)