3
4

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 5 years have passed since last update.

LaravelでSeederを使ってダミーデータを入れる

Last updated at Posted at 2019-05-08

はじめに

railsの勉強してたら「PHPでSeeder使えるのかな」と思って
ググったら真っ先にLaravelが出てきたので実装してみました。

Seederとは?

種をまく人、種まき機、種取り機

(参考:https://ejje.weblio.jp/content/seeder)

Laravelではデータベースにテストデータを一斉に挿入する処理を指します。
DBに種をまくというイメージです。

実装

artisanコマンドでseederクラスを生成します。
ターミナルで

php artisan make:seeder "seederClass"

を実行すると、 database/seeds下にDatabaseSeeder.phpseederClass.phpが生成されます。
DatabaseSeeder.phpの中身は以下のようになっています。

DatabaseSeeder.php
<?php

use Illuminate\Database\Seeder;

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

後述の実行コマンドが叩かれた際はこのrun()が呼び出されます。 

seederClass.phpの中身は以下のようになっています。

seederClass.php
<?php

use Illuminate\Database\Seeder;

class seederClass extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

上記のrun()にDBへの挿入処理を書いていきます。
Databaseの設定はconfig/database.phpで行います。

database.php
<?php
 
return [
    // ....
 
    'default' => env('DB_CONNECTION', 'mysql'),
    
    // ....

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'hoge'), // ここで記述したデータベースを使用
            'username' => env('DB_USERNAME', 'hoge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
 
    // ....
    ];
];

実際にrun()を実装してみます。

DatabaseSeeder.php
<?php

use Illuminate\Database\Seeder;

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

use Illuminate\Database\Seeder;

class seederClass extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
       DB::table('table')->insert([
          'name' => 'username',
          'email' => 'mail@example.com'
        ]);
    }
}

記述後、ターミナルで

php artisan db:seed

を実行するとダミーデータの挿入が完了する。

#おわりに
実はseederはテーブル作成で使われることが多いです。
ダミーデータの挿入はfakerfactoryを使うので、seederだけで行うケースは少ないです。
今回は簡単なデータ挿入ですのでseederだけで行いました。
fakerfactoryを使ったダミーデータの挿入は後日公開いたしますのでご期待ください。

参考文献

weblio-seederとは
Qiita-Laravelでシーダーを使う
Laravel 5.6 データベース:シーディング

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?