1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VoyagerのUsersをCSVからseederを使って一括インポート

Last updated at Posted at 2018-11-28

#Voyagerで大量のユーザーを登録したい

ユーザーメンバーのリストCSVがあるのでそれを一括で読み込んでユーザー登録をしたい。

#Seederをつくる前に

config/app.phpでタイムゾーンとロケールの設定が正しくされていることを確認してください。

config/app.php
return [
    // ...
 
    'timezone' => 'Asia/Tokyo',
    'locale' => 'ja',

#Seederの原型

UsersTableSeeder.php
...\database\seeds\UsersTableSeeder.php

上記コピー、編集してCSV取り込むためのVoyagerUsersTableSeeder.phpを作っています

#Seeder保存先

VoyagerUsersTableSeeder.php
...\database\seeds\VoyagerUsersTableSeeder.php

#Seederのコード

VoyagerUsersTableSeeder.php

<?php

use Illuminate\Database\Seeder;
use TCG\Voyager\Models\Role;
use TCG\Voyager\Models\User;
use Carbon\Carbon; //追加

class TkusersTableSeeder extends Seeder
{
    /**
     * Auto generated seed file.
     *
     * @return void
     */
    public function run()
    {

    //追記ここから   

        $file = new SplFileObject('database/csv/users.csv');
        $file->setFlags(
            \SplFileObject::READ_CSV |
            \SplFileObject::READ_AHEAD |
            \SplFileObject::SKIP_EMPTY |
            \SplFileObject::DROP_NEW_LINE
        );
        $list = [];
        $now = Carbon::now();
        foreach($file as $line) {
            $list[] = [
                'name'           => $line[0],
                'email'          => $line[1],
                'password'       => bcrypt($line[2]),
                'remember_token' => str_random(60),
                'role_id'        => 2,
                'created_at'     => $now,
                'updated_at'     => $now,

            ];
        }

        DB::table("users")->insert($list);

    //追記ここまで

    }
}

#CSV(users.csv)ファイル保存先

users.csv
...\database\csv\users.csv

csvはutf-8の文字コードのカンマ区切りで保存してください。じゃないと日本語読み込んでくれません。
Excelからでは上記形式で保存できなかったので、メモ帳で開いてutf-8で保存しました。

#CSVの内容

タイトル行はないです。

users.csv
NAME1,hoge1@hoge.co.jp,password1
NAME2,hoge2@hoge.co.jp,password2
NAME3,hoge3@hoge.co.jp,password3

#Seeder実行

artisanでseeder実行
php artisan db:seed --class=VoyagerUsersTableSeeder

#参考記事

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?