0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Laravel8]少量のダミーデータを入れたいとき。シーダーの設定方法メモ

Posted at

大量のダミーデータをデータベースに入れたいときは、FakerとFactoryを組み合わせて使います。
今回は、数個程度の少量のダミーデータを入れる為の、シーダーの使い方をメモしておきます。
管理者(Admin)のダミーデータを入れる想定で書いていきます。

環境:XAMPP for Windows, Laravel8
公式マニュアル:
https://laravel.com/docs/8.x/seeding#writing-seeders

1. artisanコマンドでシーダーを作る。

まずは以下のようにartisanコマンドでシーダーを作ります。

php artisan make:seeder AdminSeeder

そうすると、以下画像の通り、database\seeders配下にAdminSeederのファイルが作成されます。

image.png

2. シーダーファイルを設定する。

作成されたAdminSeederファイルに設定していきます。
まずは、DBファサードを使うので、use文で読み込みます。また、今回はパスワードもデータベース保存したいので、パスワードをHash化する為のHashファサードも読み込みます。
次に、run()メソッド内部を書いていきます。DBファーサードのtable()メソッドには、挿入したいテーブル名を書きます。また、insert()メソッドで、ダミーデータを連想配列形式で書いていきます。(キーの部分はテーブルのカラム名。)

\xampp\htdocs\ec-site\database\seeders\AdminSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;   //DBファサード読み込み
use Illuminate\Support\Facades\Hash;   //Hashファサード読み込み

class AdminSeeder extends Seeder
{
    public function run()
    {
        DB::table('admins')->insert([
            'name' => 'アドミン太郎1',
            'email' => 'admin1@test.com',
            'password' => Hash::make('password123'),
            'created_at' => '2021/09/13'
        ]);
    }
}

3. DatabaseSeeder.phpファイルに登録する。

database\seeders\DatabaseSeeder.phpファイルのrun()メソッド部分に、作ったシーダーファイルを登録します。

\xampp\htdocs\ec-site\database\seeders\DatabaseSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        $this->call([
            AdminSeeder::class     //作ったシーダーファイルを登録する。
        ]);
    }
}

4. artisanコマンドでテーブルに挿入する。

以下いずれかのコマンドでテーブルに挿入します。

普通にデータを入れたいとき。

php artisan db:seed

既存のデータを消して、新たにデータを入れたいとき。(他のテーブルの既存データも消える。)

php artisan migrate:fresh --seed

これで指定したカラム名にデータが入ります!

image.png

5. おまけ

上記ではダミーデータが一個だけだったけど、複数個入れるときは、以下のように配列の配列にします。

\xampp\htdocs\ec-site\database\seeders\AdminSeeder.php
<?php

namespace Database\Seeders;

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

class AdminSeeder extends Seeder
{
    public function run()
    {
        DB::table('admins')->insert([
            [
                'name' => 'アドミン太郎1',
                'email' => 'admin1@test.com',
                'password' => Hash::make('password123'),
                'created_at' => '2021/09/13'
            ],
            [
                'name' => 'アドミン太郎2',
                'email' => 'admin2@test.com',
                'password' => Hash::make('password123'),
                'created_at' => '2021/09/13'
            ],
            [
                'name' => 'アドミン太郎3',
                'email' => 'admin3@test.com',
                'password' => Hash::make('password123'),
                'created_at' => '2021/09/13'
            ],
        ]);
    }
}

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?