こんにちは樹下です。
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形式でエクスポートすることができます。ぜひ、自分のプロジェクトに取り入れてみてください。