Skip to content

Commit 4dbae7d

Browse files
update
1 parent 7dbf3e3 commit 4dbae7d

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/Migrations/Migration.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,9 @@ public function drop($force = false)
115115
// read file inside folders
116116
self::initBaseDirectory();
117117

118-
// scan migration folder to get all files
119-
$files = self::scanDirectoryFiles(self::$migrations);
118+
// scan migration folder to get all files in reverse dependency order
119+
// children first, then parents, to avoid foreign key constraint errors
120+
$files = self::scanDirectoryFilesDesc(self::$migrations);
120121

121122
// run migration methods of included file
122123
$errorMessage = [];

src/Migrations/Traits/MigrationTrait.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,21 @@ private static function scanDirectoryFiles($directory)
187187
return self::sortParentFiles($files);
188188
}
189189

190+
/**
191+
* Getting all files in directory (descending dependency order)
192+
* For dropping tables safely: ensures children are processed before parents.
193+
* @param string $directory
194+
* @return array|string
195+
*/
196+
private static function scanDirectoryFilesDesc($directory)
197+
{
198+
// Ascending, dependency-aware order (parents before children)
199+
$asc = self::scanDirectoryFiles($directory);
200+
201+
// Reverse to get children before parents
202+
return array_reverse($asc);
203+
}
204+
190205
/**
191206
* Sort parent files according to their names and detected foreign key dependencies
192207
*

0 commit comments

Comments
 (0)