シェアありがとうございます!

【Laravel】Goodby CSVライブラリを使ってCSVファイルを読み込む

 こんにちわ、今日は部屋の掃除をして気持ちもすっきりのHashiです。さて、前回LaravelでCSVをダウンロードする方法を紹介しましたが、今回は逆にCSVのインポート(読み込み)に関しても備忘録を兼ねて紹介したいと思います。

 なお、Laravelとはなんぞやという方は下の記事を参照してください!

環境

 今回の環境は下記の通りとなります。

今回の環境

  • Laravel 5.5
  • MySQL 5.6.37

要点と環境

 それでは、実際にソースコードを書いていく前に、まず、今回の要点と環境を下記に簡単にまとめます。

  • CSVファイルはPOSTで受け渡す
  • CSVのデータには、行ごとに「名前」と「メールアドレス」が記載されている
  • CSVは「Goodby CSV」ライブラリを使用してパース
  • パースしたデータをDB(samplesテーブルと仮定)に保存
  • samplesテーブルには「name」と「email」フィールドが存在する

CSVのインポート(読み込み)

 では、実際に順を追って説明していきたいと思います。LaravelでCSVを読み込む方法はいくつかありますが、今回は「Goodby CSV」というライブラリを使って読み込んでいきたいと思います。

「Goodby CSV」ライブラリをインストール

 まず、今回は「Goodby CSV」ライブラリを使用するのでインストールします。

 composer.jsonファイルのrequireに下記のように追記します。

 上記を追記して保存したら、お決まりのアップデート。

Modelファイルを作成

 次に、Modelファイルを作成していきます。今回はsamplesというテーブルがあると仮定しているので下記コマンドで「Sample.php」というファイルを作成します。

 ファイルはapp直下に作成されます。

app
 ├ Sample.php

Viewファイルを作成する

 次に、Viewにあたるファイルを作成していきます。今回は「sample.blade.php」というファイルを下記階層に作成します。

resources
 ├ views
  ├ sample.blade.php

 ソースコードとしては、ファイルを読み込むフォームを下記のような感じで用意します。(formヘルパー使用)

 ※下記コードはフォームの部分のみになるので、それ以外の箇所は適宜コーディングしてください。

Controllerファイルを作成する

 ModelとViewファイルを作成したので、あとはControllerにあたるファイルを作成していきます。今回は「SampleController.php」というファイルを下記階層に作成します。

app
 ├ Http
  ├ Controllers
   ├ SampleController.php

 ファイルを作成したら、Controller部分のソースを書いていきたいと思います。

Goodby CSVをインポートする

 まずは、冒頭でインストールした「Goodby CSV」ライブラリをインポートしていきます。

Sampleモデルをインポートする

 今回は、読み込んだCSVのデータをDBのsamplesテーブルに挿入するので、Sampleモデルをインポートします。(Sampleモデルとsamplesテーブルは紐づいています)

csvをインポートする

 これで、インポートできる環境が整ったのでCSVをインポートしていきます。下のソースが一応Controller部分(SampleController.php)の完成形のサンプルソースになります。本来であればバリデーションやエラーハンドリングをしなければなりませんが、そちらは別の機会に紹介するとして今回は省きます。

 実際に、CSVをインポートしている箇所は、importCSV関数内になります。各コードにコメントアウトしているのでわかるかと思いますが、簡単に流れを説明すると下記のようになります。

  1. フォームデータからCSVファイルを受け取る
  2. Goodby CSVのconfig設定
  3. Goodby CSVライブラリでCSVデータをパース
  4. $data配列に多次元連想配列でデータを格納
  5. DBに保存
  6. リダイレクト

routing設定

 最後に、下記のようにルーティングを設定(routes/web.php)して完了になります。

まとめ

 ということで、今回はLaravel環境で「Goodby CSV」ライブラリを使ってCSVを読み込む方法を紹介しました。

 それでは、今回はここまで!また!

PHPフレームワーク Laravel入門

秀和システム

Amazonでお買い物をする場合はプライムに入会するととてもお得です。

この記事のまとめ

  • Laravelで「Goodby CSV」ライブラリを使ってCSVをインポート(読み込み)する方法

お仕事のご相談・ご依頼
お気軽にお問い合わせください!

お仕事の依頼はこちら

著者プロフィール

Takanori Hashi

東京、奄美大島、宮崎の3拠点生活を目指すフリーランスのWEBエンジニア兼デザイナー。大人になってもずっと遊んでいたい人。TwitterもInstagramも基本フォローバックするのでお気軽にフォローしてください!

人気記事

  1. 非常にこの部分で困っていたので助かりました。
    ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です