(Laravel) シーディングの実行手順

(Laravel) シーディングの 実行手順

 

本記事では、
Laravelのシーディングの実行手順について解説していく。

 

(Laravel) シーディングとは

laravelのシーディングとは、マイグレーションでテーブルを作成した後、
初期のレコードを自動的に作成する機能のことだ

laravelのシーディングを実行するイメージ画像

 

https://readouble.com/laravel/8.x/ja/seeding.html

 

シーディングの実行手順

では具体的に、
シーディングを実行する手順を紹介していく。

 

シーディングを実行する手順は概ね以下の様なステップになる。

シーディングを実行する手順
  1. シーダーファイルの作成
  2. シーダーファイルの登録
  3. シーディングを実行する

 




 

①シーダーファイルの作成

シーディングは最終的に、
シーダーファイルと言うファイルを元に実行することになる。

なのでまずは、シーダーファイルを作成する必要がある。

シーダーファイルの作成は、以下のコマンドで行う。

#シーダーファイルの作成

php artisan make:seeder ファイル名

 

シーダーファイル配置先

作成したシーダーファイルは「database/seeds」に格納される。

database/seeds

 

 

シーダーファイルに登録レコードを記述していく

次に、
作成したシーダーファイルに、シーディングによって登録したいレコード情報を記述していく。

シーダーファイルのデフォルトの記述は下記のようになっている。

<?php

use Illuminate\Database\Seeder;

class PeopleTableSeeder extends Seeder
{

    /**
     * Run the database seeds.
     *
     * @return void
     */

    public function run()

    {

        //

    }

}

 

上記、runメソッドの中に、登録するレコード作成の情報を記述していく

public function run()
    {

        $param = [
                ‘name’ => ‘taro’,
                ‘age’ => ’12’,
        ];

        DB::table(‘people’)->insert($param);

    }

 

 

DBクラスやクエリビルダを使用して、インサートの処理を記述すれば良いだろう。

 

 

②シーダーファイルの登録

シーダーファイルの作成ができたら、
シーダーファイルが実行されるように登録する必要がある。

 

シーダーファイルの登録には、database/seeds/に存在する、
DatabaseSeeder.php を編集する。

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder

{

    /**
     * Seed the application's database.
     *
     * @return void
     */

    public function run()
    {

        $this->call(PeopleTableSeeder::class);  //この行を追加

    }

}

 

runメソッド内に、作成したシーダーファイルを登録する行を追加する。

 

seederクラスのcallメソッドを呼び出し、
引数に、作成したシーダークラスを指定する。

$this->call(シーダークラス::class);

 

上記により、
シーディング実行時、指定したクラスのrunメソッドが呼び出され、シーディングが実行される、という流れになる。

 

③シーディングを実行する

最後に、シーディングを実行する

シーディングを実行するコマンドは下記

phpartisan db:seed

 

上記コマンドで、DatabaseSeeder.phpのrunメソッドが実行され、
登録されてあるシーダーファイルのrunが続けて実行される。

 

関連記事

 

https://qiita.com/gone0021/items/fe2e9deffddf8b4b0114

https://readouble.com/laravel/8.x/ja/seeding.html

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。