laravel

Laravel8でダミーデータを作成する方法【コマンドつき】

2021年8月11日

スターウォーズの人形

 

あなた
laravelでダミーデータを入れるにはどうしたらいいですか?

 

今回はこんな疑問に答えていきます。

 

【前提】

・laravel8

 

Laravel8でダミーデータを作成する方法→シーダーを使います

 

結論から話すと、シーダーという機能を使います。

以下のコマンドで、シーダーを作成できます。

php artisan make:seeder モデル名Seeder
//例
// php artisan make:seeder UserSeeder

手動生成コードを紹介

 

手動の場合のコードを紹介します。

さきほど作成したシーダーファイルに以下のように書いていきます。

今回はUserSeeeder.phpというファイル名の場合を想定して書いていきます。

 

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;

class UserSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
          DB::table('users')->insert([
              [
                  'name' => 'test1',
                  'email' => 'test6443367@kom.com',
                  'password' => Hash::make('password'),
              ],
              [
                  'name' => 'test2',
                  'email' => 'test6423367@kom.com',
                  'password' => Hash::make('password'),
              ],
              [
                  'name' => 'test3',
                  'email' => 'test6411367@kom.com',
                  'password' => Hash::make('password'),
              ]

        ]);
    }
}

 

今回は3人ほどダミーデータを入れたいので、配列で3つのデータを渡しています。

次にDatabaseSeeederで読み込んでいきます。

「database/seeders/DatabaseSeeder.php」を編集していきます。

以下のように記述してください。

 

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

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

 

最後にシーダーを実行します。

以下のコマンドを実行してください。

 

php artisan db:seed
//Seeding: Database\Seeders\UserSeeder
//Seeded:  Database\Seeders\UserSeeder (455.14ms)
//Database seeding completed successfully.
//と出れば成功

 

DBを確認して、さきほどの3つのデータが新規挿入されていれば成功です。

 

Illuminate\Contracts\Container\BindingResolutionException Target class [Database\Seeders\UserSeeder] does not exist.と出る場合の対処方法

 

上記エラーが出る場合は、以下を確認してください。

 

・クラス名を間違えていないか(UserSeederのはずが、Userになっている

・指定するクラス名にタイプミスがないか

 

Database seeding completed successfully.と出るのに、データが入っていない場合

 

「database/seeders/DatabaseSeeder.php」で、作成したシーダーを読み込んでいるか確認してください。

 

今回は以上です。

参考資料:公式ドキュメント

 

-laravel

© 2021 エンジニアてんし君ブログ