データを一括で登録
備忘録です
手順
-
以下のようなCSVファイルを用意する
database/seeders/sample.csvtitle,description,start_date,end_date タイトル1,説明1,-20,-10 タイトル2,説明2,-10,-5 タイトル3,説明3,5,10
-
シーダーファイルでCSVを読み込むようにする
database/seeders/SampleSeeder.php<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use League\Csv\Reader; class SampleSeeder extends Seeder { public function run() { $csv = Reader::createFromPath(database_path('seeders/sample.csv'), 'r'); $csv->setHeaderOffset(0); $records = $csv->getRecords(); foreach ($records as $record) { DB::table('sample')->insert([ 'title' => $record['title'], 'description' => $record['description'], 'start_date' => $record['start_date'], 'end_date' => $record['end_date'], ]); } } }
league/csv
ライブラリを使うには、事前にインストールするcomposer require league/csv
-
シーダーの実行
database/seeders/DatabaseSeeder.php
を編集して、SampleSeeder
を呼び出すようにするdatabase/seeders/DatabaseSeeder.php<?php namespace Database\Seeders; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { $this->call(SampleSeeder::class); } }
シーダーを実行して、データベースにデータを挿入する
php artisan db:seed