フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

Laravel Seeder

はじめに

  • シーダ(初期値設定)クラスを使用し、テストデーターをデーターベースに設定する方法を試してみる readouble.com

シーダクラス定義

  • シーダを生成するには、make:seeder Artisanコマンドを実行します。
php artisan make:seeder UsersTableSeeder
  • database/seeders/UsersTableSeeder.phpファイルが作成される
  • 下記のサンプルはusersテーブルに20件のダミーデータを登録するサンプルです。
<?php

namespace Database\Seeders;

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

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $users = array();
        for($i = 0; $i < 20; $i++){
            array_push($users,[
                'name' => Str::random(10),
                'email' => Str::random(10).'@gmail.com',
                'password' => Hash::make('password'),
            ]);
        }
        //
        DB::table('users')->insert($users);
    }
}
  • database/seeders/DatabaseSeeder.phpファイルに作成したSeederを追記してあげる必要がある。
<?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(UsersTableSeeder::class);
    }
}

Seederの実行

$ php artisan db:seed
Seeding: Database\Seeders\UsersTableSeeder
Seeded:  Database\Seeders\UsersTableSeeder (1,621.02ms)
Database seeding completed successfully.

確認

  • ダミーデータが20件生成されていることを確認することができる
mysql> select * from users;
+----+-----------------+--------------------------+-------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
| id | name            | email                    | email_verified_at | password                                                     | remember_token | created_at          | updated_at          |
+----+-----------------+--------------------------+-------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
|  2 | dk9GREu3pE      | QmNE2f8zFI@gmail.com     | NULL              | $2y$10$Kds6nS.CUkPMOgyPpYnOo.BP/8YRVkW51NzKo4nwnTBpBUdrNx8j6 | NULL           | NULL                | NULL                |
|  3 | tdrCZW7Z6y      | OJyfDKXqiq@gmail.com     | NULL              | $2y$10$H9IFkphs6tq4oH07Yxqw/e7WaiAvoLEZFxQ1Yu4jTGOxK.diK3yJK | NULL           | NULL                | NULL                |
|  4 | RfV3PpEAJM      | 7mieERWGUx@gmail.com     | NULL              | $2y$10$AwB.XaNZ9VGarsEoo1mzJ.ICgngU0dGe4ki0SeILewjOOXPaAf0c6 | NULL           | NULL                | NULL                |
|  5 | pnw3o8mcBU      | wQBaDd4XtG@gmail.com     | NULL              | $2y$10$csnYNcWoe99zC9K4u1WIf.SCQ3/3JRMGuM.rUgPhCP.rbq3PpkkEu | NULL           | NULL                | NULL                |
|  6 | zL43E2MxJm      | iES7GvXbKd@gmail.com     | NULL              | $2y$10$Afx4tjz2G8nnC4sD6CqlyuFAvRsEKi3JN4dlSlvqpE0I3PSK54QNG | NULL           | NULL                | NULL                |
|  7 | j0vXF4omvb      | clW7EPH1Qv@gmail.com     | NULL              | $2y$10$WhtDNZjBDXwU3hyadPr2uetnzElHFojrJeAo342K1cNIyILffBOCC | NULL           | NULL                | NULL                |
|  8 | naJQZk0h9j      | fHBYobcIrD@gmail.com     | NULL              | $2y$10$JSfb4ylA5IFFDKovrVnW/OX4b6w8DOOFVSsKmEglXV88vWvOrURWe | NULL           | NULL                | NULL                |
|  9 | SsfNaFUsmk      | Wn6PZfjEsO@gmail.com     | NULL              | $2y$10$seL0LtIG81Me5kGF3kEXE.6MmSApCA7OhOJa/oHMmZoQuy0PGOK5C | NULL           | NULL                | NULL                |
| 10 | fRE0SvWjCw      | anTaj2hLBR@gmail.com     | NULL              | $2y$10$nT/u.DOc.rqeZbO1v1.pEeZ.S8kg7l0A0/0j2sCFr8d..I9EA/P2G | NULL           | NULL                | NULL                |
| 11 | 2xfPeOSq44      | qVVunrBnMj@gmail.com     | NULL              | $2y$10$8cauH47FfxIcugx339T8juPunNpHRg8mPGFgV2IBlM32zB60..vcS | NULL           | NULL                | NULL                |
| 12 | 1ig0wynLRW      | kMx4gxpyQk@gmail.com     | NULL              | $2y$10$3uUt2TbJsa3gTY9RzbB4aeizCB1utfRyjgyjZA6Bk5RiHsX1lctHS | NULL           | NULL                | NULL                |
| 13 | 9T8wka2QYS      | MbQoLGpxiD@gmail.com     | NULL              | $2y$10$m6yPoT.dfj03PIpmWuNF.uEk4SNVX3c8BhaH7wBi1y0aixlplwiCe | NULL           | NULL                | NULL                |
| 14 | w13yMjS1dg      | XNGacafx4n@gmail.com     | NULL              | $2y$10$dOMaqQ0Hq5TOOjJRsEQbFOZuzVsB7kjvKpjhlkICbSqiXdFkJp6kW | NULL           | NULL                | NULL                |
| 15 | uCFtvemmwm      | SlG9Xdf3ME@gmail.com     | NULL              | $2y$10$j5CbiBAGqccunLYZaQtkBeh699LhGD0n5e3P/Czbi3hxFF.AxYHYW | NULL           | NULL                | NULL                |
| 16 | KUObzrLwPQ      | MWtMtBwzi3@gmail.com     | NULL              | $2y$10$qROkCfVblRLBQ.w8cHR15OhhBlbVbIIHeff1KA1ppTU0G.1Ac5Kcy | NULL           | NULL                | NULL                |
| 17 | uwehY4hUYP      | fi0S3wbBe0@gmail.com     | NULL              | $2y$10$pAimotkAm5Vax8JsNzywtuFmpTWO9d6bNb3trBRwUWgtj.r57pBi2 | NULL           | NULL                | NULL                |
| 18 | 2RPWsZ2jck      | NTQeZVIOUg@gmail.com     | NULL              | $2y$10$DEcI5a7IciBu51AXm0YSjOcmYUsE6MQx750L15Uu8y09tP09FgPUy | NULL           | NULL                | NULL                |
| 19 | gRg8V1ALkj      | sabY861R4q@gmail.com     | NULL              | $2y$10$O5knLOkd7bFdOKj60Bqn0uiWI4EDdQBVXwdZQ.SbnlOnH5YOd2lga | NULL           | NULL                | NULL                |
| 20 | EemgcSToTO      | Lymx9MFga5@gmail.com     | NULL              | $2y$10$XH7j.oGMP9wZ6XgxFOckj.LHHZs.nrN5BA8BUHuJp6Ng8QxjgYSA6 | NULL           | NULL                | NULL                |
| 21 | xsJVieWY4C      | WB1q67CNA8@gmail.com     | NULL              | $2y$10$kY6n0cJuf2giiMDz.kv2HedVpdKofn.HKh60ihionxeB8Jd1onoi6 | NULL           | NULL                | NULL                |
+----+-----------------+--------------------------+-------------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
20 rows in set (0.02 sec)