シーダーについて(Faker)

2021/02/18

サンプルデータを入れることをシーダーといいます。

前回、シーダーの基本的な使い方について学びました。

基本編ではサンプルデータを直接シーダーファイルに記述したのですが、もっと便利なやり方があります。

Faker というライブラリを使うとフェイクデータを自動で生成することができます。

今回は Faker を使ったシーダーのやり方についてエントリーします。

 

Fakerについて

Laravel には Faker がはじめから組み込まれています。

なので、Composer を使ってインストールする必要はありません。

Faker のよく利用されるコマンドは以下になります。

項目 記述 出力結果
名前 $faker->name() 斎藤 くみ子
住所 $faker->address() 7443156 奈良県村山市東区加納町木村10-1-5
ユーザー名 $faker->userName() kudo.kyosuke
パスワード $faker->password() DKVA_6K03S-=@|
メールアドレス $faker->email() kyosuke53@uno.com
電話番号 $faker->phoneNumber() 0410-021-281
日付 $faker->date($format='Y-m-d',$max='now') 1975-09-03
クレジット番号 $faker->creditCardNumber() 5540806828245734
配列の値をランダムに抽出 $faker->randomElement($gender)
2桁の数字をランダムに表示 $faker->randomNumber(2) 12
10~100のランダム値 $faker->numberBetween(10,100) 58
正規表現 $faker->regexify('[1-9]{3}-[0-9]{4}') 735-4103
性別 $faker->randomElement($array=['男性','女性']) 男性
誕生日 $faker->dateTimeBetween('-80 years', '-20years')->format('Y-m-d') 20歳から80歳になるように
文字系(アルファベット) $faker->text(20) ※20文字数までの文章 Dicta aspernatur.
文字系(アルファベット) $faker->sentence(rand(1,4)) ※1~4つの単語で文章 Consequatur alias beatae iste.
文字系(日本語) $faker->realText(20) ※20文字の文章 つぎは、少し汽車のひとりとりとりとりの。
会社名(日本語) $faker->company 株式会社 小泉
ランダム $faker->randomElement(['0','1','2']) ※'0' '1' '2' のいずれか表示
日付 $faker->dateTimeBetween($startDate = 'now', $endDate = '+2 week')->format('Y-m-d')
※今日から2週間後までのランダムな日付時刻
2021-02-26

 

演習

前回シーダーの基本チュートリアルで「employees」テーブルにサンプルデータを入れました。

今回はシーダーファイルを編集して Faker を使ってサンプルデータを入れてみます。

 

手順

 

1)シーダーファイルの編集

警告事前にモデルを作成しておく必要があります。
DBの操作について(Eloquent)~基本~

上記のコードを簡単に解説します

#1 テーブルの削除

クエリービルダーを使って一旦テーブルを削除します。

当然、前回やったシーダーで入れたサンプルデータも消えます。


DB::table('employees')->delete();

 

#2 Fakerの使用

引数に日本語を指定。


$faker = Faker::create('ja_JP');

 

#3 所属IDのサンプルデータ

randomElement(array)でこちらで用意した配列から生成可能。


 $dept = ['1','2'];
:
'dept_id' => $faker->randomElement($dept),

 

#4 サンプルレコードの挿入回数

10件のデータを作成します。


for ($i = 0; $i < 10; $i++) {
:
}

 

2)シーダー実行

artisanコマンドで編集したシーダーファイルを実行します。


php artisan db:seed

# オプションで --class を使えば特定のシーダーだけ実行される
php artisan db:seed --class=EmployeeTableSeeder

 

3)動作確認

SQLコマンドでテーブルの中身を確認します。


> select * from employees;

上記のような感じになればOKです。

Fakerを利用したシーダーの使い方は以上です。

 

PHPフレームワーク Laravel入門 第2版

僕がはじめてLaravelを学習するために参考にしたサイトは、掌田津耶乃(しょうだつやの)さんの libro というサイトです。当時(2016年)、Laravel学習サイトの中でもこのサイトは群を抜いてわかりやすく説明されていたので、とても勉強になったのを覚えています。この本は掌田津耶乃さんが書いた本なので、わかりやすく解説されているだろうと kindle で購入しました。2020年8月の時点でいうと日本国内にて唯一の Laravel の良書と言っても良いかと思います。口コミでもLaravel本のロングセラー定番解説書として認知されています。当サイトではチュートリアル形式でLaravelを解説しているので、初心者の方はこの本とセットで学習されるといいと思います。しかし、かなりわかりやすく解説されているとはいえ、PHP中級者以上のスキルは必要です。PHP自体の知識が乏しい方は 独習PHP 第3版 をあわせて購入することをお勧めします。

Amazonで詳細を見る

オススメ

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-基礎知識