【Laravel】ダミーデータ作成
Faker
・ダミーデータ生成用のライブラリ
・主にモデルファクトリを定義する際に使用する
・Fakerはデフォルトでcomposer.jsonに指定されている
・seederにちょこっと書くだけで動いてくれる
[Laravel5.1]Fakerチートシート - Qiita
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class UsersTableSeeder extends Seeder
{
public function run()
{
$faker = \Faker\Factory::create('ja_JP');
for ($i = 0; $i < 10; $i++) {
$param = [
'name' => $faker->name(),
'email' => $faker->email(),
'password' => $faker->password(),
];
DB::table('users')->insert($param);
}
}
}
Factory
①ターミナルで、factoryを生成するコマンドを実行
php artisan make:factory モデル名Factory
ex)UserモデルのFactoryを作る場合
php artisan make:factory UserFactory
②Factoryの中身をかく
database>Factories>UserFactory.php
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
use App\Models\User;
class UserFactory extends Factory
{
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
'remember_token' => Str::random(10),
];
}
public function unverified()
{
return $this->state(function (array $attributes) {
return [
'email_verified_at' => null,
];
});
}
}
③作成したseederをDatabaseSeeder.phpに登録
(UsersTableSeeder.phpに登録して、DatabaseSeeder.phpにUsersTableSeederの実行処理を記入しても同じように動いた)
database>seeders>DatabaseSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
\App\Models\User::factory(20)->create();
}
}
④デフォルトでは英語のデータがでてきてしまうので、日本語化
config/app.php
'fallback_locale' => 'en',
⑤ターミナルにて以下のコマンドを実行
php artisan db:seed