【もう迷わない】プログラミングスクールをポイント別に紹介

Laravelでシーダーを扱おう!実務で使える方法を解説

Laravelでいちいちデータベースに値を入れるのは面倒…だからシーダーを使ってさっとデータベースにデータを入れたいけど、どうやってやればいいんだろう…

こんな疑問を解決します。

本記事のゴール
  • Laravelでシーダーを使ってデータを投入する方法がわかる
Contents

Laravelでシーダーを使うとどんなことができる?

結論、Laravelでシーダーを使えるようになると、データベースにテストデータをコマンド一発で入れられるので非常に便利です。

例えば、カテゴリーテーブルがあったとします。

category_idcategory_name
1Laravel
2PHP
3Ruby
4SQL
5jQuery
6HTML
7CSS

このようなデータをデータベースに1件ずつ手入力でデータを投入するのは面倒ですよね。

しかし、 Laravelのシーダーの機能を使えば、シーダーファイルを作成した後にコマンド一発でデータを投入することができます。

        DB::table('categories')->insert([
            [
                'category_id' => 1,
                'category_name' => 'Laravel',
            ],
            [
                'category_id' => 2,
                'category_name' => 'PHP',
            ],
            [
                'category_id' => 3,
                'category_name' => 'Ruby',
            ],
        ]);
php artisan db:seed --class=categorySeeder

Laravelでシーダーを使う手順

STEP
シーダーファイルを作成する
STEP
シーダーファイルを編集する
STEP
シーダーを実行する

このような手順になっています。

シーダーファイルを作成する

まずはシーダーファイルを作成しましょう。

事前にcateogriesテーブルを作成し、以下のような構造になっています。

シーダーファイルの作成

php artisan make:seeder categorySeeder

すると、database>seedersのファイル下にcategorySeeder.phpファイルが作成される。

シーダーファイルを編集する

作成されたシーダーファイルでデータベースに投入したいデータを編集します。

試しにcategoriesテーブルに、以下のように3つデーを入れてみます。

category_iduser_idcategory_name
11Laravel
21PHP
31Ruby

シーダーファイルを編集します。

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;// 追加

class categorySeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('categories')->insert([
            [
                'category_id'   => 1,
                'user_id'       => 1,
                'category_name' => 'Laravel',
            ],
            [
                'category_id'   => 2,
                'user_id'       => 1,
                'category_name' => 'PHP',
            ],
            [
                'category_id'   => 3,
                'user_id'       => 1,
                'category_name' => 'Ruby',
            ],
        ]);
    }
}

シーダーを実行する

編集が終わったら以下を実行。

php artisan db:seed --class=categorySeeder

これでcategoriesテーブルに任意のデータを投入できました。

DB::を使うので、冒頭にuse Illuminate\Support\Facades\DB;を追加することをお忘れなく。

DB::table(‘テーブル名’)->insert()でデータを投入できます。

ちなみにNULLを許可していないカラムはシーダーファイルに書く必要がありますが、NULL許可しているカラムは書かなくてもOKです。

created_atやupdated_atのカラムはテーブル作成時のデフォルトでNULL許可なので、記述しなくてもOKなんですね。

【まとめ】Laravelでシーダーをマスターしよう

Laravelでシーダーを使えるようになると、テストデータを投入するのが便利になります。

実務では、テーブル数も増えるしテストしたいデータも多くなるので、シーダーを使いこなして開発の効率アップを目指しましょう。

他にもLaravelに役立つ記事をブログで書いているのでぜひ参考にしてくださいね!

コメント

コメントする

CAPTCHA


Contents
閉じる