今回は、Laravelのseederでダミーデータを追加する方法を紹介致します!
seederとは?
データベースのテーブルにダミーデータを追加するファイルのことを「seeder」と言い、「seeder」を用いてデータベースにデータを一括で挿入することができます。
開発の初めにダミーデータがサクッと準備できるのでスムーズに開発に入ることができます!(実際に現場でも利用しておりました。)
挿入する手順(テーブル等が作成されている前提になります。)としては、
①seederファイルを作成
②seederファイルに挿入したい内容を記述
③『DatabaseSeeder.php』修正
④seederを実行
になります。
開発環境
Mac OS Monterey12.3.1
MAMP (PHP7.4.21 )
Composer version2.3.5
テーブル作成
今回は『customer』テーブルを用意しました。
| カラム名 | 型 | Null |
| id | INT | ◯ |
| name | TEXT | ◯ |
| tell_number | INT | ◯ |
| birthday | DATE | ◯ |
| regist_date | DATE | ◯ |
テーブル作成方法については下記に記載してます!
Models作成
$ php artisan make:model CustomerLaravelで上記コマンドを実行します。
Modelsディレクトリ内に『Customer.php』が作成されます。
<?php
namespace App\Models\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $fillable = [
'id',
'name',
'tell_number',
'birthday',
'regist_date',
];
}$fillableにテーブルの項目を追加していきます。
seederファイル作成
$ php artisan make:seed CustomerTableSeederLaravelで上記コマンドを実行します。
seedersファイル内に『CustomerTableSeeder.php』が作成されます。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class CustomerTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('customer')->insert([
[
'id'=> '1',
'name'=> '鈴木太郎',
'tell_number'=> '08011112222',
'birthday'=> '1990/01/20',
'regist_date'=> date('Y-m-d'),
],[
'id'=> '2',
'name'=> '田中太郎',
'tell_number'=> '08033334444',
'birthday'=> '1991/02/20',
'regist_date'=> date('Y-m-d'),
],[
'id'=> '3',
'name'=> '林太郎',
'tell_number'=> '08055556666',
'birthday'=> '1992/03/20',
'regist_date'=> date('Y-m-d'),
],[
'id'=> '4',
'name'=> '村田太郎',
'tell_number'=> '08077778888',
'birthday'=> '1993/04/20',
'regist_date'=> date('Y-m-d'),
],[
'id'=> '5',
'name'=> '上原太郎',
'tell_number'=> '08099991111',
'birthday'=> '1994/05/20',
'regist_date'=> date('Y-m-d'),
],
]);
}
}『DatabaseSeeder.php』修正
seedersディレクトリの『DatabaseSeeder.php』へ、
下記『CustomerTableSeeder.php』を呼び出すためのコードを追加していきます。
$this->call(CustomerTableSeeder::class);下記参考にしてください。
<?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(CustomerTableSeeder::class);
}
}データベースにデータを作成(seederを実行)
$ php artisan db:seed上記コマンドを実行します。成功した場合は、DBにデータが登録されます。
稀にエラーが出ることがありますので対応方法を下記紹介します。
エラー①
Class "Database\Seeders\DB" not foundDBファサードが見つからないとのことなので、『CustomerTableSeeder.php』へ
下記を追記する必要があります。
use Illuminate\Support\Facades\DB; エラー②
Numeric value out of range: 1264 Out of range value for column 'tell_number' at row 1挿入しようとしているデータの値が、DBカラムの限界値を超えてしまっているとのことです。
そのため、DBカラムの限界値を編集する必要があります。
データベースを確認
『CustomerTableSeeder.php』で記述したデータが登録されています。

まとめ
Laravelでseederファイルを用いてダミーデータを登録する方法を紹介しました。
①テーブルを作成する
②Modelsファイルを作成する
③seederファイルを作成する
④『DatabaseSeeder.php』を修正する
⑤『php artisan db:seed』を実行する
上記の流れでダミーデータを作成することができるので参考にしてみてください。
最後までご覧いただきありがとうございました!





コメント