世界を旅して暮らしたい放浪エンジニアブログ

Laravelでマスターデータの登録にSeederを利用する

Laravel開発で初期のマスターデータは、Seederで登録・管理するようにしています。 その際に利用するコマンドなどメモとして残していきたいと思います。

[ 目次 ]

はじめに

こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。

今回はLaravelのSeeder機能をメモといてまとめていきたいと思います。

■ 環境

ライブラリ バージョン
PHP ^7.1.3
Laravel 5.7.*

既に、\App\Models\Categoryモデルが存在していて、その初期データを投入することをイメージして進めていきます。

Seederの作成

makeコマンドにseederのジェネレーターが用意されていますので、そちらを利用します。

$ php artisan make:seeder CategoriesTableSeeder

database/seeds/CategoriesTableSeeder.php ファイルが生成されます。
デフォルトでは以下のような内容になっています。

<?php

use Illuminate\Database\Seeder;

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

Seederクラスの修正

以下のように修正しました。

<?php

use Illuminate\Database\Seeder;
use App\Models\Category;

class CategoriesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Category::insert([
    		[ 'name' => 'カテゴリ1'],
    		[ 'name' => 'カテゴリ2'],
    		[ 'name' => 'カテゴリ3'],
    		[ 'name' => 'カテゴリ4' ],
    		[ 'name' => 'カテゴリ5' ],
        ]);
    }
}

DatabaseSeeder.phpにCategoriesTableSeederの呼び出しを追加

以下のようにDatabaseSeeder.phpを修正してみます。

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(CategoriesTableSeeder::class); // ここを追加しています
    }
}

Seederを実行

全てのSeederを実行

$ php artisan db:seed

指定したSeederクラスを実行

$ php artisan db:seed --class=CategoriesTableSeeder

全てのデータを巻き戻して、Seederクラスも実行

$ php artisan migrate:refresh --seed

最後に

Seederという機能の存在を知っていれば利用方法はすぐググればわかります。
makeコマンドなど覚えてはいますが、念のためいつもググって確認していました。
これからは自分のブログを見返していければと思います。

参考URL

LaravelのSeeder単体で実行。

前のページ

次のページ

Profile

なかむ🇭🇰Webデベロッパー

なかむ🇭🇰Webデベロッパー

香港在住4年目になるWEBエンジニアのなかむです。 現在は、LaravelやRailsを利用したWEB開発を中心にエンジニアをしています。 顧客は全て日本の企業になります。リモート開発にて各企業様の支援を行なっております

プロフィール詳細はこちら

Latest Posts