#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
#参考記事