Laravelにはデータベースにテスト用のデータを作成するSeederという機能が搭載されています。名前、メールアドレスなど様々なテストデータはファクトリという機能に入っており、これらを連動させると、簡単に大量のテストデータを作成することができます。
開発環境
Laravel 7.x , MySQL 8.x , CentOS 7.x , Apache 2.4
前提条件
Laravelプロジェクトを作成し、MySQLの設定が終わっている。
データベースpostsが作られ、id , name , memo , created_at , updated_atが作られている。
Seederクラスの作成
ターミナルからseederの作成を行います。
# php artisan make:seeder PostsTableSeeder
PostsTableSeederというように、テーブル名を頭文字大文字の複数形で記載します。
database/seedsの中にPostsTableSeeder.phpファイルが生成されます。
Seederクラスの編集
PostsTableSeeder.phpに以下を記載します。
public function run() { $posts = factory(App\Post::class, 20)->create(); }
20という数字は20件を意味しています。
これから各カラムにどのようなデータを挿入するかを指定してきます。
Factoryの設定
Factoryファイルの作成
# php artisan make:factory PostFactory -m Post
Factoryファイルの編集
database/factories/PostFactory.phpを編集します。
$factory->define(Post::class, function (Faker $faker) { return [ 'name' => $faker->title, 'memo' => $faker->realText, ]; });
今回はnameにtitleを、memoにrealTextを設定してみます。
Fakerで利用できるデーターはいろいろ準備されており、下記のようなものが使えます。
name , email , password , country , address ,phoneNumber , company , realText …
かなりの項目が用意されています。詳しくは下記の記事が参考になります。
Qiita [Laravel5.1]Fakerチートシート
DatabaseSeeder.phpの設定
public function run() { $this->call(PostsTableSeeder::class); }
Seederの実行
# php artisan db:seed