PR

【Laravel】php artisan make:seeder & php artisan db:seedサンプル

この記事は約5分で読めます。

make:seederは、データベースに初期データを投入するクラスを生成し、
db:seedは、そのデータをテーブルに投入します。

広告

サンプル

広告

php artisan make:seeder

php artisan make:seeder SampleSeeder

上記コマンドを実行すると、

このように生成されたクラスファイルのパスが表示され、
シーダークラスが生成されます。

生成されたファイル↓

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class SampleSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        //
    }
}

このrunメソッドにデータを挿入するロジックを追加、
DatabaseSeeder.phpに登録、
php artisan db:seedを実行すると、初期データの投入がされます。
(sample_tableは作成されている必要があります。テーブル作成にはphp artisan migrateが使用できます。)

以下に、sample_tableというテーブルにデータを投入するサンプルクラスを載せます。

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class SampleSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        DB::table('sample_table')->insert([
            'name' => 'taro',
            'email' => 'sample@example.com',
            'age' => 30,
        ]);
    }
}

これで、sample_tableの、name、email、ageの3つのカラムに、
taro、sample@exaple.com、30の1つのデータが投入されるSeederクラスとなります。

php artisan db:seed

コマンド実行前に、2つ準備が必要です。

①composer.jsonに

    "autoload": {
        "classmap": [
            "database/seeders",
        ]
    },

上記の記述をする

この記述があることによって、/database/seeders/ 以下のシーダークラスが読み込まれるようになります。

②/database/seeders/ 以下にデフォルトで用意してある、DatabaseSeeder.phpに実行する
シーダークラスを登録

今回は、make:seederにて作成したSampleSeeder.phpを実行するため、
DatabaseSeeder.phpにSampleSeeder.phpを登録します。

<?php

namespace Database\Seeders;

use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        $this->call(SampleSeeder::class);
    }
}

これらの①、②の実行準備をすることで、seedが実行できるようになります。

上記の実行準備を確認後、

php artisan db:seed

上記コマンドを実行すると、データが挿入されます。

実行後画面↓

php artisan db:seed

実行後sample_tableデータ↓

php artisan db:seed a5m2

上記のように、設定したシーダークラスのデータが正しく挿入されていることが分かります。

オプション

–class

実行するシーダークラスを指定します。

php artisan db:seed --class=SampleSeeder

上記コマンドを実行すると、SampleSeeder.phpのみが実行され、
このクラスのデータのみがテーブルに挿入されます。

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