@@ -44,22 +44,33 @@ public function migrate()
4444
4545 public function seed ()
4646 {
47- $ seeders = glob ($ this ->seedersPath . '/*.php ' );
48- sort ($ seeders );
47+ // Define seeder order based on dependencies
48+ $ seederOrder = [
49+ 'DepartmentsSeeder ' ,
50+ 'UsersSeeder ' ,
51+ 'EmployeeProfilesSeeder ' ,
52+ 'LeaveTypesSeeder ' ,
53+ 'LeaveRequestsSeeder ' ,
54+ 'AttendanceSeeder ' ,
55+ 'PayrollSeeder '
56+ ];
4957
50- foreach ($ seeders as $ seeder ) {
51- $ className = 'App \\Database \\Seeders \\' . basename ($ seeder , '.php ' );
52- require_once $ seeder ;
53-
54- try {
55- $ sql = $ className ::run ();
56- $ this ->db ->exec ($ sql );
57- echo "Seeded: " . basename ($ seeder ) . "\n" ;
58- } catch (\PDOException $ e ) {
59- if (strpos ($ e ->getMessage (), 'Duplicate entry ' ) !== false ) {
60- echo "Skipped (already exists): " . basename ($ seeder ) . "\n" ;
61- } else {
62- throw $ e ;
58+ foreach ($ seederOrder as $ seederName ) {
59+ $ seederFile = $ this ->seedersPath . '/ ' . $ seederName . '.php ' ;
60+ if (file_exists ($ seederFile )) {
61+ $ className = 'App \\Database \\Seeders \\' . $ seederName ;
62+ require_once $ seederFile ;
63+
64+ try {
65+ $ sql = $ className ::run ();
66+ $ this ->db ->exec ($ sql );
67+ echo "Seeded: " . $ seederName . ".php \n" ;
68+ } catch (\PDOException $ e ) {
69+ if (strpos ($ e ->getMessage (), 'Duplicate entry ' ) !== false ) {
70+ echo "Skipped (already exists): " . $ seederName . ".php \n" ;
71+ } else {
72+ throw $ e ;
73+ }
6374 }
6475 }
6576 }
@@ -71,9 +82,19 @@ public function rollback()
7182 rsort ($ migrations );
7283
7384 foreach ($ migrations as $ migration ) {
74- $ className = 'App \\Database \\Migrations \\' . basename ($ migration , '.php ' );
85+ $ baseName = basename ($ migration , '.php ' );
86+ $ className = 'App \\Database \\Migrations \\' . substr ($ baseName , 4 ); // Remove number prefix
87+ if (strpos ($ baseName , '001_ ' ) === 0 ) $ className .= '001 ' ;
88+ elseif (strpos ($ baseName , '002_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreateDepartmentsTable002 ' ;
89+ elseif (strpos ($ baseName , '003_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreateEmployeeProfilesTable003 ' ;
90+ elseif (strpos ($ baseName , '004_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreateAttendanceTable004 ' ;
91+ elseif (strpos ($ baseName , '005_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreateLeaveTypesTable005 ' ;
92+ elseif (strpos ($ baseName , '006_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreateLeaveRequestsTable006 ' ;
93+ elseif (strpos ($ baseName , '007_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreatePayrollTable007 ' ;
94+ elseif (strpos ($ baseName , '008_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreatePerformanceReviewsTable008 ' ;
95+ elseif (strpos ($ baseName , '009_ ' ) === 0 ) $ className = 'App \\Database \\Migrations \\CreateTokensTable009 ' ;
96+
7597 require_once $ migration ;
76-
7798 $ sql = $ className ::down ();
7899 $ this ->db ->exec ($ sql );
79100 echo "Rolled back: " . basename ($ migration ) . "\n" ;
0 commit comments