Jelajahi Sumber

fix IndexexToDelete order execution on SchemaDiffGenerator

phpdevcommunity 2 minggu lalu
induk
melakukan
29db1b2e0e
2 mengubah file dengan 8 tambahan dan 5 penghapusan
  1. 1 0
      README.md
  2. 7 5
      src/Generator/SchemaDiffGenerator.php

+ 1 - 0
README.md

@@ -267,6 +267,7 @@ Créez un fichier de configuration simple pour connecter PaperORM à votre base
 <?php
 require_once 'vendor/autoload.php';
 
+
 use PhpDevCommunity\PaperORM\EntityManager;
 use PhpDevCommunity\PaperORM\PaperConfiguration;
 

+ 7 - 5
src/Generator/SchemaDiffGenerator.php

@@ -102,10 +102,17 @@ final class SchemaDiffGenerator
                     );
                 }
             }
+
+
+            foreach ($indexesToDelete as $index) {
+                $sqlUp[] = $schema->dropIndex($index);
+                $sqlDown[] = $schema->createIndex($diff->getOriginalIndex($index->getName()));
+            }
             foreach ($indexesToAdd as $index) {
                 $sqlUp[] = $schema->createIndex($index);
                 $sqlDown[] = $schema->dropIndex($index);
             }
+
             foreach ($foreignKeyToAdd as $foreignKey) {
                 if ($schema->supportsAddForeignKey()) {
                     $sqlUp[] = $schema->createForeignKeyConstraint($tableName, $foreignKey);
@@ -128,11 +135,6 @@ final class SchemaDiffGenerator
                 }
             }
 
-            foreach ($indexesToDelete as $index) {
-                $sqlUp[] = $schema->dropIndex($index);
-                $sqlDown[] = $schema->createIndex($diff->getOriginalIndex($index->getName()));
-            }
-
             foreach ($columnsToDelete as $column) {
                 if ($schema->supportsDropColumn()) {
                     $sqlUp[] = $schema->dropColumn($tableName, $column);