Laravel-admin PHP プログラミング

【Laravel-admin】good/csvを利用したCSVファイルのインポート

投稿日:2019年1月9日 更新日:

こんばんは。

一月に入り一気に寒くなってきましたね。

僕の住んでいる場所は山間にあるため、朝方は超冷えます。そして霧が深いので道路&フロントがガチガチに凍ります。

いいところもいっぱいあるのですが、冬の田舎は苦手ですねぇ…

前置きはさておき、今日はLarave-adminでCSVファイルでのテーブルインポートを行ってみたいと思います。

test_usersテーブルの一覧画面は【Laravel-admin】Laravel-adminで新規テーブルを作成しCRUD画面を追加する方法で作成済みです。

Goodby/CSVのインストール

LaravelでCSVからテーブルにデータをインポートすることができるライブラリはいくつかありますが、今回はメモリ効率が非常にいいという「goodby/csv」を使用したいと思います。

参考:goodby/csv

composerを使用してインストールを行います。

上記の記述を行ったら「composer install」あるいは「composer update」を行います。

updateを行うと他のライブラリなど、新しいバージョンが存在する場合最新版を取得してしまうので、

その場合は「composer.lock」を一度削除してインストールを行います。

実装内容

一覧画面にインポートボタンを追加し、ボタン押下でCSVのデータをテーブルに挿入できるようにしたいと思います。

※一覧に表示されているデータはファクトリーで作成したダミーデータです。

 

インポート用のテーブル作成

インポート用にitemsテーブルを作成します。

マイグレーションファイル

Toolクラスを作成

インポート機能を提供するボタンを一覧画面に追加するためにToolクラスを作成します。

一覧画面のカスタムツールの作成に関しては以下のドキュメントを参考にしました。

ajaxSetupでheader情報にcsrfトークンを追加しないとデータをpost出来ないので忘れず追加しましょう。

参考:Custom tools

app/Admin/Extemsion/Tools/CsvImport.phpを以下の内容で作成します。

CsvImport.php

resource/views配下にビューを作成し、ボタン用のHTMLを記述します。

csv_upload.blade.php

 

Controller

コントローラのgrid内で、作成したToolクラスを読み込みます。

csvImport関数内でgoodby/csvを使用しCSVファイルをパースし、配列に代入後テーブルにインサートしています。

「$interpreter->unstrict();」を記述するすることで、CSVファイルの列の一貫性がない場合も無視して実行します。

CSVファイルの列の一貫性が必要な場合はコメントアウト等すれば、列の一貫性がない場合エラーとなります。

また、LexerConfigでCSVファイルの区切り文字や囲い文字、文字コードなどを指定することができます。

参考:Documentation

TestUserCpntroller.php

まとめ

今回、一覧画面のボタン追加にToolクラスを使用しました。

このToolクラスですが、コントローラで読み込むだけで、表示画面のHTMLにJavascriptを使用して様々な処理を実行できるので使い道はたくさんありそうです!

課題として、CSVのデータはとりあえずはインサートできるようになりましたが、まだまだ改善点は多く、成功時・失敗時のメッセージ表示など調べ切れておりません…

Javascriptを学習しながらUI的に見栄えのいい表示方法が見つかればまた記事にしたいと思います!

-Laravel-admin, PHP, プログラミング

関連記事

メール送信におけるレピュテーションとは ~IP・ドメインを育てる!!~

Webシステムにおいて、何らかの契機でメール送信を行う機能は必要とされるケースが多くあります。 僕自身、関わった案件の中でメール送信機能を実装した経験がいくつかあります。 メール送信機能の実装に関して …

【Laravel-admin】Laravel-adminでのRoles(役割)とpermission(権限)について

前回「【laravel-admin】Laravel-adminで新規テーブルを作成しCRUD画面を追加する方法」でテーブルを作成し画面を追加しました。 今回は作成したテーブルの操作画面をメニューを追加 …

【VirtualBox+Vagrant】VirtualBox+Vagrantで仮想環境を構築する

前回、仮想環境簡単設定ツール「Vagrant」のインストールで仮想環境設定自動化ツール「Vagarant」のインストールを行いました。 Vagrantを使用すれば、VirtualBox上に作成する仮想 …

【Laravel-admin】PHPのライブラリ「Laravel-admin」のインストール方法

どうも、こんばんは。 今日はPHPのフレームワークの中でも国内外で多く利用されている「Laravel」と、管理画面作成用のパッケージである「Laravel-admin」のインストールと使い方を解説した …

Visual Studio 2017のインストール方法

以前のバージョンのアンインストール インストールの前に以前のバージョンが既にインストールされている場合に、以前のバージョンのアンインストール作業を簡単に実行することができます。 以下のページからTot …