プログラミング学習やフリーランスエンジニア情報を発信していきます。現役フリーランスエンジニア2人で運営してます!

  1. バックエンド

Laravelのシーティング(Seeding)機能をマスターしよう!

最終更新日:2019/04/02

本記事では、Laravelのシーディング(Seeding)機能の使い方をわかりやすく解説していきます。

以下の記事の続きです。まだ読んでいない方はぜひご一読ください!

初心者の方でもLaravelの動作環境を簡単に作れるWINDIIオリジナルのソースコードを用意したので、実際に動かして学ぶとより深く理解できるようになります!

以下の記事を参考にご活用ください。

Laravelのシーディング(Seeding)機能ってなに?

シード(Seed)という英語は、種をまくという意味です。
Laravelのシードとは、テストデータをデーターベースに入れることです。テストデータをまくということですね。
実際のアプリケーション開発では、大量のデータが必要になることも少なくないです。その時に、いちいち手でデータを一つづつ作っていくのは骨が折れます。そこで、Laravelのシーディングという機能を使って一気にデータを入れてしまおうというわけです。

それでは、さっそくシーディングを使っていきましょう!

シーダクラスを作成する

今回は、usersテーブルとarticlesテーブルにテストデータを入れるのをゴールにしましょう。

以下のコマンドでusersテーブルにデータを挿入するシーダクラスを作成します。

php artisan make:seeder UsersTableSeeder

実行すると、database/seeds/UsersTableSeeder.phpが作成されます。

以下のようにrun()メソッドに50人のユーザを作る処理を記述します。

<?php

use Illuminate\Database\Seeder;
use Carbon\Carbon;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        for($i=1;$i <= 50;$i++) {
            DB::table('users')->insert([
                'name' => "テストユーザ{$i}",
                'email' => "test{$i}@example.com",
                'password' => bcrypt('secret'),
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ]);
        }
    }
}


書き上げたらdatabase/seeds/DatabaseSeeder.phpを開いてrun()メソッドに以下を追加しましょう。

<?php

use Illuminate\Database\Seeder;

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

同様にarticlesテーブルへのシーダクラスも作成します。

php artisan make:seeder PostsTableSeeder

database/seeds/ArticlesTableSeeder.phpを開いて以下のようにします。

<?php

use Illuminate\Database\Seeder;
use Carbon\Carbon;

class ArticlesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        for($i=1;$i <= 50;$i++) {
            DB::table('articles')->insert([
                'title' => "テストタイトル{$i}",
                'content' => "本文{$i}",
                'user_id' => mt_rand(1, 50),
                'created_at' => Carbon::now(),
                'updated_at' => Carbon::now(),
            ]);
        }
    }
}

書き上げたらdatabase/seeds/DatabaseSeeder.phpを開いてrun()メソッドに以下を追加しましょう。

database/seeds/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);
         // 追加
        $this->call(ArticlesTableSeeder::class);
    }
}

シーダを実行する

それでは、先ほど作成したシーダを実行しましょう。まずは先ほど作成したシーだクラスを読み込むために以下のコマンドを実行します。

composer dump-autoload

実行できたら、以下のコマンドでシーダを実行します。

php artisan db:seed

実行できたら、データベース(localhost:8080)をみてみましょう!

以下のような感じでデータが大量に保存されているはずです。

ちなみに、以下のコマンドでデータベースの再生成とシーディングをすることができます。

php artisan migrate:refresh --seed

まとめ

以上、シーディングの使い方でした。シーディングをちゃんと定義しておくと、チームに新しく入ってきた人がすぐに開発に取りかかれるので、チームの生産性が非常に高まります!
ぜひマスターしてください。

次回は認可について解説します!

The following two tabs change content below.

riri

25歳。 Twitter:りりー@ryudoi1 // windii socialというslackチャンネルで質問や雑談等受け付けてるので気軽に参加してください!(もちろん無料です) フリーランスになるまでの過程は こちら

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP