このページではPHPのフレームワーク「Laravel」のシーディングの機能を使ってをダミーデータを作成する方法についてまとめています。
シーディングとは?
以前、「マイグレーション機能を使ってテーブルを作成する方法」でテーブルの作成方法について解説しましたが、テーブルを作成しただけでは、レコードがない状態です。
そのため、作成したログイン処理や登録処理などが正常に動くかどうかを確認するためにはテスト用のダミーデータが必要になります。
このダミーデータを作るための機能をシーディングと呼び、Laravelでは標準でこの機能が搭載されているため、わざわざDBのテーブルを直接操作する必要がありません。
シーディング機能を使ってダミーデータを作成する方法
シーディングの機能を使ってテーブルを作成する手順は次のようになります。
- シーダーファイルの作成
- ダミーデータ作成処理を記述
- シーダーファイルの実行
それぞれ順に解説していきます。
1. シーダーファイルの作成
シーダーファイルを作成するためのコマンドは次のようになります。
php artisan make:seeder 任意のシーダーファイル名
シーダーファイル名は任意でOKですが、わかりやすいものがいいでしょう。例えば、商品テーブルをデータを追加するのであれば「ProductsTableSeeder」のようにします。
このコマンドを実行することで、/database/seeds配下にシーダーファイルが生成されます。
2. ダミーデータ作成処理を記述
生成されたファイルを、テキストエディタを開きましょう。
すると、次のような記述があると思います。
<?php
use Illuminate\Database\Seeder;
class ProductsTableSeeder extends Seeder
{
public function run()
{
}
}
このrunメソッドの中にダミーデータのinsert処理を書いていきます。
では、実際にproductsテーブルに挿入する処理ためのシーダーファイルを作ってみましょう。
以下、サンプルコードです。
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; //追加:DBクラスを使うための設定
use Carbon\Carbon; //追加:Carbonクラスを使うための設定
class ProductsTableSeeder extends Seeder
{
public function run()
{
//ダミーデータのinsert処理
DB::table('products')->insert([
'product_name' => 'iphone8',
'price' => 50000,
'category_name' => 'スマートフォン',
'created_at' => Carbon::now(), //処理時の日付が入る
'updated_at' => Carbon::now(), //処理時の日付が入る
]);
}
}
ダミーデータのinsert処理にはDBクラスを使うため、「use Illuminate\Support\Facades\DB;」を追記しています。
runメソッド内では、ダミーデータとして登録するデータを記述しています。
上のサンプルの場合は1件のデータが登録されます。
3. シーダーファイルの実行
シーダーファイルに処理が記述できたら、次のコマンドでファイルを実行します。
php artisan db:seed --class=実行するシーダーファイル名
これによりシーダーファイル内のrunメソッドが実行され、テーブルにダミーデータがinsertされます。
Laravel学習にオススメの書籍