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 | 氏名 |
メールアドレス | |
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件登録できた