csvファイル
storage/app/members.csv
山田太郎,東京都港区,090-0000-0000
佐藤花子,東京都杉並区,090-2222-2222
山本二郎,東京都豊島区,090-3333-3333
田中三郎,神奈川県横浜市,090-4444-4444
斎藤さくら,東京都台東区,090-5555-5555
加藤桃,東京都世田谷区,090-6666-6666
ルーティング
/アプリ名/routes/web.php
<?php
Route::get('/csv_sample', 'SampleController@csvSample');
コントローラー
app/Http/Controllers/SampleController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SampleController extends Controller{
public function csvSample(){
// SplFileObjectの作成
$file = new \SplFileObject(storage_path('app/members.csv'));
// 読み込み設定
$file->setFlags(
\SplFileObject::READ_CSV | // CSVを配列形式で読み込む
\SplFileObject::READ_AHEAD |
\SplFileObject::SKIP_EMPTY | // 前の行と合わせて、空行があったら読み飛ばす
\SplFileObject::DROP_NEW_LINE // 改行コードは無視する
);
// 1行ずつ読み込んで配列に保存
$members = [];
foreach($file as $member){
$members[] = $member;
}
return view('samples.csv_sample', [
'title' => 'CSV読み込みのサンプル',
'members' => $members,
]);
}
ビュー
resources/views/samples/csv_sample.blade.php
@extends('layouts.default')
@section('title', $title)
@section('content')
<h1>{{ $title }}</h1>
@foreach($members as $member)
<p>{{ $member[0] }}: {{ $member[1] }} TEL: {{ $member[2] }}</p>
@endforeach
@endsection