File tree Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Original file line number Diff line number Diff 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 = [];
Original file line number Diff line number Diff 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 *
You can’t perform that action at this time.
0 commit comments