【PHP】Laravelにてテストデータを作成する(Seeder)
今回のテーマ
Laravelでテストデータを作成できるSeederの作成と使い方について
記載します。
環境
Laravel 8.20.1 PHP 7.3.11
目次
- 1.Seederとは
- 2.Seeder使用手順
- 3.まとめ
1.Seederとは
Laravelのドキュメントには以下の通り記載されています。
シーダ(初期値設定)クラスを使用し、テストデーターをデーターベースに設定するシンプルな方法もLaravelには備わっています。 Laravelに標準に備わっている機能でテストデータを作成できます。
データベース:シーディング 8.x (再翻訳中)Laravel
上記の通り、Laravelの標準機能でテストデータを作成できる機能のことです。
例えば一覧の表示を動作確認する際にデータベースにSQLでデータを挿入
せずにテストデータを作成できます。
2.Seeder使用手順
Seeder作成からテストデータの生成までの手順は以下の通りです。
1 Seederの作成
GamesTableSeederの箇所には任意で名前をつけてください。
php artisan make:seeder GamesTableSeeder // 出力結果 Seeder created successfully.
2.作成されたSeederファイルにデータを記載する。
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class GamesTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table('games')->insert([ 'game_name'=>'パワプロ', 'price'=>'2980', 'genre'=>'スポーツ', 'user_id'=>'1', 'cart_item_id'=>'1' ], [ 'game_name'=>'三國無双', 'price'=>'7980', 'genre'=>'アクション', 'user_id'=>'1', 'cart_item_id'=>'1' ]);
run()メソッドの中にinsert()を使用してデータを挿入しております。
ランダムで挿入する方法もドキュメントに記載されていますが
今回は設定カラムに自分で入れる値を決めています。
3.seederを実行する
--class〜には任意で作成したSeederの名前を入れてコマンドを実行する
php artisan db:seed --class=GamesTableSeeder // 出力結果 Database seeding completed successfully.
まとめ
以上、Seederの作成方法とファイル記載、そして実行方法を
簡単に記載しました。
今回は自分でテストデータを入力しましたが、ランダムでテストデータを作成するFactoryがあります。
基本はこちらを使用してFactroyでカバーできないテストデータがあれば、今回のようにテストデータを自分で決める方法でいいのではないかと思います。
Factoryについて
データベースのテスト 8.x (再翻訳中)Laravel