@@ -474,7 +474,7 @@ protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff): array
474
474
475
475
$ sql = [];
476
476
477
- foreach ($ this ->getIndexesInAlteredTable ($ diff, $ table ) as $ index ) {
477
+ foreach ($ this ->getIndexesInAlteredTable ($ diff ) as $ index ) {
478
478
if ($ index ->isPrimary ()) {
479
479
continue ;
480
480
}
@@ -647,9 +647,9 @@ public function getAlterTableSQL(TableDiff $diff): array
647
647
$ newTable = new Table (
648
648
$ table ->getObjectName ()->toSQL ($ this ),
649
649
$ columns ,
650
- $ this ->getPrimaryIndexInAlteredTable ($ diff, $ table ),
650
+ $ this ->getPrimaryIndexInAlteredTable ($ diff ),
651
651
[],
652
- $ this ->getForeignKeysInAlteredTable ($ diff, $ table ),
652
+ $ this ->getForeignKeysInAlteredTable ($ diff ),
653
653
$ table ->getOptions (),
654
654
);
655
655
@@ -743,45 +743,46 @@ private function getSimpleAlterTableSQL(TableDiff $diff): array|false
743
743
return $ sql ;
744
744
}
745
745
746
- /** @return string[] */
747
- private function getColumnNamesInAlteredTable (TableDiff $ diff , Table $ oldTable ): array
746
+ /**
747
+ * Based on the table diff, returns a map where the keys are the lower-case old column names and the values are the
748
+ * new column names. If the column was dropped, it is not present in the map.
749
+ *
750
+ * @return array<string, string>
751
+ */
752
+ private function getDiffColumnNameMap (TableDiff $ diff ): array
748
753
{
749
- $ columns = [];
754
+ $ oldTable = $ diff ->getOldTable ();
755
+
756
+ $ map = [];
750
757
751
758
foreach ($ oldTable ->getColumns () as $ column ) {
752
- $ columnName = $ column ->getName ();
753
- $ columns [strtolower ($ columnName )] = $ columnName ;
759
+ $ columnName = $ column ->getName ();
760
+ $ map [strtolower ($ columnName )] = $ columnName ;
754
761
}
755
762
756
763
foreach ($ diff ->getDroppedColumns () as $ column ) {
757
- $ columnName = strtolower ($ column ->getName ());
758
- if (! isset ($ columns [$ columnName ])) {
759
- continue ;
760
- }
761
-
762
- unset($ columns [$ columnName ]);
764
+ unset($ map [strtolower ($ column ->getName ())]);
763
765
}
764
766
765
767
foreach ($ diff ->getChangedColumns () as $ columnDiff ) {
766
- $ oldColumnName = $ columnDiff ->getOldColumn ()->getName ();
767
- $ newColumnName = $ columnDiff ->getNewColumn ()->getName ();
768
- $ columns [strtolower ($ oldColumnName )] = $ newColumnName ;
769
- $ columns [strtolower ($ newColumnName )] = $ newColumnName ;
768
+ $ columnName = $ columnDiff ->getOldColumn ()->getName ();
769
+ $ map [strtolower ($ columnName )] = $ columnDiff ->getNewColumn ()->getName ();
770
770
}
771
771
772
772
foreach ($ diff ->getAddedColumns () as $ column ) {
773
- $ columnName = $ column ->getName ();
774
- $ columns [strtolower ($ columnName )] = $ columnName ;
773
+ $ columnName = $ column ->getName ();
774
+ $ map [strtolower ($ columnName )] = $ columnName ;
775
775
}
776
776
777
- return $ columns ;
777
+ return $ map ;
778
778
}
779
779
780
- /** @return Index[] */
781
- private function getIndexesInAlteredTable (TableDiff $ diff, Table $ oldTable ): array
780
+ /** @return array< Index> */
781
+ private function getIndexesInAlteredTable (TableDiff $ diff ): array
782
782
{
783
- $ indexes = $ oldTable ->getIndexes ();
784
- $ columnNames = $ this ->getColumnNamesInAlteredTable ($ diff , $ oldTable );
783
+ $ oldTable = $ diff ->getOldTable ();
784
+ $ indexes = $ oldTable ->getIndexes ();
785
+ $ nameMap = $ this ->getDiffColumnNameMap ($ diff );
785
786
786
787
foreach ($ indexes as $ key => $ index ) {
787
788
foreach ($ diff ->getRenamedIndexes () as $ oldIndexName => $ renamedIndex ) {
@@ -796,13 +797,13 @@ private function getIndexesInAlteredTable(TableDiff $diff, Table $oldTable): arr
796
797
$ indexColumns = [];
797
798
foreach ($ index ->getColumns () as $ columnName ) {
798
799
$ normalizedColumnName = strtolower ($ columnName );
799
- if (! isset ($ columnNames [$ normalizedColumnName ])) {
800
+ if (! isset ($ nameMap [$ normalizedColumnName ])) {
800
801
unset($ indexes [$ key ]);
801
802
continue 2 ;
802
803
}
803
804
804
- $ indexColumns [] = $ columnNames [$ normalizedColumnName ];
805
- if ($ columnName === $ columnNames [$ normalizedColumnName ]) {
805
+ $ indexColumns [] = $ nameMap [$ normalizedColumnName ];
806
+ if ($ columnName === $ nameMap [$ normalizedColumnName ]) {
806
807
continue ;
807
808
}
808
809
@@ -850,11 +851,12 @@ private function getIndexesInAlteredTable(TableDiff $diff, Table $oldTable): arr
850
851
return $ indexes ;
851
852
}
852
853
853
- /** @return ForeignKeyConstraint[] */
854
- private function getForeignKeysInAlteredTable (TableDiff $ diff, Table $ oldTable ): array
854
+ /** @return array< ForeignKeyConstraint> */
855
+ private function getForeignKeysInAlteredTable (TableDiff $ diff ): array
855
856
{
857
+ $ oldTable = $ diff ->getOldTable ();
856
858
$ foreignKeys = $ oldTable ->getForeignKeys ();
857
- $ columnNames = $ this ->getColumnNamesInAlteredTable ($ diff, $ oldTable );
859
+ $ nameMap = $ this ->getDiffColumnNameMap ($ diff );
858
860
859
861
foreach ($ foreignKeys as $ key => $ constraint ) {
860
862
$ changed = false ;
@@ -863,14 +865,14 @@ private function getForeignKeysInAlteredTable(TableDiff $diff, Table $oldTable):
863
865
foreach ($ constraint ->getReferencingColumnNames () as $ columnName ) {
864
866
$ originalColumnName = $ columnName ->getIdentifier ()->getValue ();
865
867
$ normalizedColumnName = strtolower ($ originalColumnName );
866
- if (! isset ($ columnNames [$ normalizedColumnName ])) {
868
+ if (! isset ($ nameMap [$ normalizedColumnName ])) {
867
869
unset($ foreignKeys [$ key ]);
868
870
continue 2 ;
869
871
}
870
872
871
- $ referencingColumnNames [] = UnqualifiedName::unquoted ($ columnNames [$ normalizedColumnName ]);
873
+ $ referencingColumnNames [] = UnqualifiedName::unquoted ($ nameMap [$ normalizedColumnName ]);
872
874
873
- if ($ originalColumnName === $ columnNames [$ normalizedColumnName ]) {
875
+ if ($ originalColumnName === $ nameMap [$ normalizedColumnName ]) {
874
876
continue ;
875
877
}
876
878
@@ -909,12 +911,12 @@ private function getForeignKeysInAlteredTable(TableDiff $diff, Table $oldTable):
909
911
return $ foreignKeys ;
910
912
}
911
913
912
- /** @return Index[] */
913
- private function getPrimaryIndexInAlteredTable (TableDiff $ diff, Table $ oldTable ): array
914
+ /** @return array<string, Index> */
915
+ private function getPrimaryIndexInAlteredTable (TableDiff $ diff ): array
914
916
{
915
917
$ primaryIndex = [];
916
918
917
- foreach ($ this ->getIndexesInAlteredTable ($ diff, $ oldTable ) as $ index ) {
919
+ foreach ($ this ->getIndexesInAlteredTable ($ diff ) as $ index ) {
918
920
if (! $ index ->isPrimary ()) {
919
921
continue ;
920
922
}
0 commit comments