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

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

# 1. モデルクラス生成

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

```php5:User.php
...
class User extends Authenticatable
{
    ...
}
...
```

# 2. ファクトリー生成

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

```php5:
...
$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のシードファイルを作成

```php5:
$ php artisan make:seeder UsersTableSeeder
```

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

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

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

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

# 4. シーディング実行

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

```php5:
$ php artisan db:seed
```

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

```php5:
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件登録できた