【Laravel】seederでダミーデータを追加する方法

Laravel

今回は、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
idINT
nameTEXT
tell_numberINT
birthdayDATE
regist_dateDATE

テーブル作成方法については下記に記載してます!

Models作成

$ php artisan make:model Customer

Laravelで上記コマンドを実行します。

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 CustomerTableSeeder

Laravelで上記コマンドを実行します。

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 found

DBファサードが見つからないとのことなので、『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』を実行する

上記の流れでダミーデータを作成することができるので参考にしてみてください。

最後までご覧いただきありがとうございました!

PR

コメント

タイトルとURLをコピーしました