Загрузка данных


public function backup()
{
    $connection = config('database.default');
    $config     = config("database.connections.{$connection}");

    $filename   = $config['database'] . '_' . now()->format('Y-m-d_H-i-s') . '.sql';
    $outputPath = storage_path("app/{$filename}");

    $pdo = DB::connection()->getPdo();

    $sql = "-- Laravel DB Backup: {$config['database']}\n";
    $sql .= "-- Date: " . now() . "\n\n";
    $sql .= "SET FOREIGN_KEY_CHECKS=0;\n\n";

    // Получаем все таблицы
    $tables = $pdo->query("SHOW TABLES")->fetchAll(\PDO::FETCH_COLUMN);

    foreach ($tables as $table) {
        // CREATE TABLE
        $createRow = $pdo->query("SHOW CREATE TABLE `{$table}`")->fetch(\PDO::FETCH_ASSOC);
        $sql .= "DROP TABLE IF EXISTS `{$table}`;\n";
        $sql .= array_values($createRow)[1] . ";\n\n";

        // INSERT данных
        $rows = $pdo->query("SELECT * FROM `{$table}`")->fetchAll(\PDO::FETCH_ASSOC);
        foreach ($rows as $row) {
            $values = array_map(fn($v) => $v === null ? 'NULL' : $pdo->quote($v), $row);
            $sql .= "INSERT INTO `{$table}` VALUES (" . implode(', ', $values) . ");\n";
        }
        $sql .= "\n";
    }

    $sql .= "SET FOREIGN_KEY_CHECKS=1;\n";

    file_put_contents($outputPath, $sql);

    return response()->download($outputPath, $filename)->deleteFileAfterSend(true);
}