LoginSignup
4
5

More than 5 years have passed since last update.

【Laravel】FactoryとFakerを使ったダミーデータ作成

Last updated at Posted at 2019-04-10

FactoryとFakerを使ってUserのダミーデータを50件登録してみます

1. モデルクラス生成

Userのモデルはプロジェクト作成時に自動でされている

User.php
...
class User extends Authenticatable
{
    ...
}
...

2. ファクトリー生成

Userのファクトリーはすでに生成されている

...
$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,  
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});
...

ここではFakerというテストデータを簡単に作成できるライブラリを使用している

Fakerで使用できる主なデータ

項目名 出力されるデータ
name 氏名
email メールアドレス
safeEmail メールアドレス
password パスワード
country 国名
address 住所
phoneNumber 電話番号
company 企業名
realText テキスト

3. シード生成

Userのシードファイルを作成

$ php artisan make:seeder UsersTableSeeder

すると、database/seedフォルダにUsersTableSeeder.php生成されるので、runメソッドを編集

UserTableSeeder.php
...
    public function run()
    {
        factory(\App\User::class, 50)->create();
    }
...

次にUserTableSeeder.phpが実行されるようにDatabaseSeederクラスへ定義

database/seeds/DatabaseSeeder.php
...
    public function run()
    {
        $this->call(UsersTableSeeder::class);
    }
...

4. シーディング実行

最後にシーディングを実行します

$ php artisan db:seed

mysqlコマンドで確認してみると。。。

mysql> select * from users;
+----+-------------------------+--------------------------------+--------------------------------------------------------------+--------------------------------------------------------------+---------------------+---------------------+
| id | name                    | email                          | password                                                     | remember_token                                               | created_at          | updated_at          |
+----+-------------------------+--------------------------------+--------------------------------------------------------------+--------------------------------------------------------------+---------------------+---------------------+
|  1 | Randall Conroy Sr.      | casimir.dicki@example.net      | $2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm | 75q5yGu3Ic                                                   | 2019-04-10 00:17:53 | 2019-04-10 00:17:53 |
|  2 | Ms. Verona Balistreri   | towne.erich@example.net        | $2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm | 999z183Z9g                                                   | 2019-04-10 00:17:53 | 2019-04-10 00:17:53 |
|  3 | Ms. Delores Block MD    | kaci.waters@example.net        | $2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm | MxXvb6c65G                                                   | 2019-04-10 00:17:53 | 2019-04-10 00:17:53 |
// ...
| 48 | Erin O'Reilly           | dolores53@example.com          | $2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm | Q85w4j0vJC                                                   | 2019-04-10 00:17:53 | 2019-04-10 00:17:53 |
| 49 | Fay Pagac               | lynch.joaquin@example.net      | $2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm | x8e499Kl9S                                                   | 2019-04-10 00:17:53 | 2019-04-10 00:17:53 |
| 50 | Cassidy Bins Sr.        | barrows.marlon@example.com     | $2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm | jlCjONVDKM                                                   | 2019-04-10 00:17:53 | 2019-04-10 00:17:53 |
+----+-------------------------+--------------------------------+--------------------------------------------------------------+--------------------------------------------------------------+---------------------+---------------------+
50 rows in set (0.00 sec)

上手くUserが50件登録できた

4
5
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
4
5