はじめに
ファクトリの生成
php artisan make:factory ContactFormFactory
fakerの生成されるデータを日本語にする設定
- config/app.phpファイルの下記の設定を日本語に変更する
// 'faker_locale' => 'en_US',
'faker_locale' => 'ja_JP',
- database/factories/ContactFormFactory.phpファイルが生成される。
- definition()関数に登録したいデータの設定をする
<?php
namespace Database\Factories;
use App\Models\ContactForm;
use Illuminate\Database\Eloquent\Factories\Factory;
class ContactFormFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = ContactForm::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
//
'name' => $this->faker->name,
'email' => $this->faker->unique()->email,
'url' => $this->faker->url,
'sex' => $this->faker->randomElement(['0', '1']),
'age' => $this->faker->numberBetween($min = 1, $max = 6),
'description' => $this->faker->realText(200),
'subject' => $this->faker->realText(50)
];
}
}
Seederを作成する
php artisan make:seeder ContactFormSeeder
- Seederを作成する。下記の例は100件データを登録する。laravelのバージョンにより記述方法が異なるので注意が必要
stackoverflow.com
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\ContactForm;
class ContactFormSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
ContactForm::factory()->count(100)->create();
}
}
- database/seeders/DatabaseSeeder.phpに作成したSeederを追加する
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// \App\Models\User::factory(10)->create();
$this->call(UsersTableSeeder::class);
$this->call(ContactFormSeeder::class);
}
}
- 下記のコマンドを実行しないと追加したSeederが存在しないと言われてしまう。
$ composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: encore/laravel-admin
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/tinker
Discovered Package: laravel/ui
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
Generated optimized autoload files containing 5239 classes
php artisan db:seed --class=ContactformSeeder
実行結果
mysql> select count(*) from contact_forms;
+----------+
| count(*) |
+----------+
| 101 |
+----------+
1 row in set (0.00 sec)