ユアスク by みんなシステムズ

MENU

Laravelで簡単なCSVダウンロード機能を実装しよう!

2023/04/02

こんにちは樹下です。

Laravelを使って、CSVダウンロード機能を実装する方法を紹介します。

この記事では、データベースからデータを取得し、CSV形式で出力し、ダウンロードできるようにする手順を解説します。

LaravelでCSVダウンロード機能を実装する手順

手順1: コントローラの作成

まずは、CSVダウンロード機能を実装するためのコントローラを作成しましょう。

php artisan make:controller CsvDownloadController

手順2: ルーティングの設定

routes/web.phpにCSVダウンロード用のルーティングを追加します。

use App\Http\Controllers\CsvDownloadController;

Route::get('/csv-download', [CsvDownloadController::class, 'downloadCsv']);

手順3: CSVダウンロード機能の実装

CsvDownloadControllerにCSVダウンロード機能を実装します。

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\StreamedResponse;

class CsvDownloadController extends Controller
{
    public function downloadCsv()
    {
        $users = User::all();
        $csvHeader = ['id', 'name', 'email', 'created_at', 'updated_at'];
        $csvData = $users->toArray();

        $response = new StreamedResponse(function () use ($csvHeader, $csvData) {
            $handle = fopen('php://output', 'w');
            fputcsv($handle, $csvHeader);

            foreach ($csvData as $row) {
                fputcsv($handle, $row);
            }

            fclose($handle);
        }, 200, [
            'Content-Type' => 'text/csv',
            'Content-Disposition' => 'attachment; filename="users.csv"',
        ]);

        return $response;
    }
}

手順4: 動作確認

これで、CSVダウンロード機能が実装されました。ブラウザで/csv-downloadにアクセスして、正しくCSVファイルがダウンロードできるか確認してください。

まとめ

今回はLaravelでCSVダウンロード機能を実装する方法を紹介しました。

この機能を応用すれば、さまざまなデータをCSV形式でエクスポートすることができます。ぜひ、自分のプロジェクトに取り入れてみてください。