初めてのLaravel 5.1 : (13) Seeding

Laravel では artisan db:seed コマンドを使って、初期データをDBに埋め込むことが可能です。システムに必要な初期データを作成したり、開発で使用するサンプルデータを作成することができます。今回はArticlesテーブルに開発で使用するサンプルデータを作成してみます。

DatabaseSeeder ファイル

DBに初期データを埋め込むには以下のファイルを編集する必要があります。

database
└── seeds
    └── DatabaseSeeder.php
<?php // database/seeds/DatabaseSeeder.php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        Model::unguard();  // ①

        // $this->call('UserTableSeeder');

        Model::reguard();  // ②
    }
}

① unguard()メソッドは、EloquentのマスアサインメントをOFFにします。
② reguard()メソッドは、EloquentのマスアサインメントをONにします。


設定例

Articlesテーブルにサンプルデータを作成します。

<?php // database/seeds/DatabaseSeeder.php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

use Faker\Factory as Faker;
use Carbon\Carbon;
use App\Article;

class DatabaseSeeder extends Seeder
{

    public function run()  // ①
    {
        Model::unguard();

        $this->call('ArticlesTableSeeder');  // ②

        Model::reguard();
    }
}

class ArticlesTableSeeder extends Seeder  // ③
{
    public function run()
    {
        DB::table('articles')->delete();  // ④

        $faker = Faker::create('en_US');  // ⑤

        for ($i = 0; $i < 10; $i++) {  // ⑥
            Article::create([
                'title' => $faker->sentence(),
                'body' => $faker->paragraph(),
                'published_at' => Carbon::today()
            ]);
        }
    }

}

① php artisan db:seed コマンドを実行すると、DatabaseSeederクラスの run() メソッドが実行されます。
② run()メソッドの中から、ArticlesTableSeederをコールします。
③ テーブル毎にSeederの派生クラスを作成すると、管理しやすくなります。
Query Builderを使って、Articlesテーブルのレコードを全て削除しています。
Fakerを使用してダミーデータを作成しています。Laravel 5.1では標準でFackerが使用できるようになっています。
⑥ 10件のデータを作成します。


Seedを実行

$ php artisan db:seed
Seeded: ArticlesTableSeeder

tinkerを使って、結果を確認します。

$ php artisan tinker
>>> App\Article::all()->toArray();
=> [
       [
           "id"           => "1",
           "title"        => "Voluptates repellendus libero quia provident officiis laudantium nesciunt.",
           "body"         => "Ut ab non dolor et nulla mollitia illo. Est quidem saepe adipisci magni unde pariatur animi. Porro vel laboriosam excepturi excepturi dolores. Non doloremque sapiente aut id.",
           "created_at"   => "2015-02-24 17:35:48",
           "updated_at"   => "2015-02-24 17:35:48",
           "published_at" => "2015-02-24 17:35:48"
       ],
       [
           "id"           => "2",
           "title"        => "Accusamus ut repellendus reprehenderit explicabo eos qui qui nobis.",
           "body"         => "Veritatis fugiat qui ut sint velit. Perspiciatis recusandae laudantium quo voluptatum aliquid distinctio rerum. Assumenda consequatur voluptas aut eos recusandae. Suscipit deleniti aliquid quaerat sapiente numquam consectetur nisi aliquam.",
           "created_at"   => "2015-02-24 17:35:48",
           "updated_at"   => "2015-02-24 17:35:48",
           "published_at" => "2015-02-24 17:35:48"
       ],

...

データが登録できました。

初めてのLaravel 5.1 : (13) Seeding」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中