6

私はおそらくこれがどのように機能するかを正確に誤解していますが、これを達成するための最良の方法は何ですか? 私は何かを念頭に置いていますが、それはかなりハッキーなようです。

アプリケーションのテストに使用するサンプル データのセットがあります。これは、Laravel の組み込みのシーダーを介してシードされます。これには、サンプル ユーザー、アドレス、ドキュメントなどが含まれます。

また、本番環境で使用する必要があるデフォルト データのセットもあります。現在、これを移行に直接追加しています。たとえば、account_roles のテーブルを追加する場合、移行の最後に次を含めることができます。

$account_admin = array('role' => 'Account Administrator', 'flag' => 'ACCOUNT_ADMIN');
$account_owner = array('role' => 'Account Administrator', 'flag' => 'ACCOUNT_OWNER');
DB::table('account_roles')->insert($account_admin);
DB::table('account_roles')->insert($account_owner);

このように、本番環境では、データベースを移行して本番対応のデータベース値を挿入するだけで、ステージング/開発環境では移行を更新してから、データベースにサンプル データをシードできます。

これを行う他の(より良い)方法はありますか?

4

1 に答える 1

10

シーダー ファイルで現在の環境をチェックし、必要に応じてシードできます。

<?php

class DatabaseSeeder extends Seeder {

    public function run()
    {
            Eloquent::unguard();

            if (App::environment() === 'production')
            {
                $this->call('ProductionSeeder');
            }
            else
            {
                $this->call('StagingSeeder');
            }
    }

}
于 2013-09-23T02:47:55.597 に答える