【Laravel】CSVファイルとして出力(ダウンロード)する方法

LaravelでCSVファイルとして出力(ダウンロード)する方法メモ。例として、View側で入力した年齢からユーザを取得し、CSVファイルとしてダウンロードする処理を紹介します。

View側の処理

Viewで入力した値をコントローラにsubmitします。

 

ルーティング

コントローラにGETリクエストするためのルーティングを記述。

 

コントローラ

Viewから送られてきたリクエスト(ここで言う年齢)から、同年齢のユーザ情報取得します。ユーザ情報はサービスに送り、実際のCSVダウンロードの処理はサービスで行います。

 

サービス

SymfonyのStreamedResponseクラスを使用し、CSVダウンロードを行います。StreamedResponseは大容量のCSVにも耐えることができます。

php://outputストリームを使用してファイルに書き出すことなく、CSV形式を都度出力します。

配列データをCSVファイルに書き込むfputcsv関数を使用し、CSV形式にフォーマットします。

参考:laravel5.3 CSVダウンロードを実装する

以上、LaravelでCSVファイルとして出力(ダウンロード)する方法でした。