LoginSignup
0
0

More than 1 year has passed since last update.

Laravel csvファイル読み込み&出力

Last updated at Posted at 2021-06-08

image.png

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

dd は「dump and die(データを吐いて終了)」の省略形。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0