pluck('migration')->toArray(); } $files = glob(database_path('migrations/*.php')); $all = array_map(fn ($f) => basename($f, '.php'), $files); sort($all); $done = array_values(array_intersect($all, $ran)); $pending = array_values(array_diff($all, $ran)); return view('admin.database', compact('connection', 'dbName', 'pending', 'done')); } public function upgrade(Request $request): RedirectResponse { try { Artisan::call('migrate', ['--force' => true]); $output = Artisan::output(); return redirect()->route('admin.database') ->with('success', '数据库升级已执行完成。') ->with('migrate_output', $output); } catch (\Throwable $e) { return redirect()->route('admin.database') ->with('error', '升级失败:' . $e->getMessage()); } } }