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)シーダーファイルの編集
上記のコードを簡単に解説します
#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版 をあわせて購入することをお勧めします。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。