ASCIIオンリーなど文字変換が必要なければ以下のような感じ。
1 2 3 4 5 6 7 8 9 10 |
$users = User::all()->toArray(); $stream = fopen('php://output', 'w'); foreach ($users as $user) { fputcsv($stream, $user); } $headers = array( 'Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="users.csv"', ); return Response::make('', 200, $headers); |
UTF8のDBからShiftJISのCSVを吐きたければ変換加えて以下のような感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$users = User::all()->toArray(); $stream = fopen('php://temp', 'r+b'); foreach ($users as $user) { fputcsv($stream, $user); } rewind($stream); $csv = str_replace(PHP_EOL, "\r\n", stream_get_contents($stream)); $csv = mb_convert_encoding($csv, 'SJIS'); $headers = array( 'Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="users.csv"', ); return response($csv, 200, $headers); |
参考サイト
LaravelでCSVダウンロード。 – Qiita
https://qiita.com/niiyz/items/83770cfa6d6bb33c10ab