5

簡単な質問がありますが、Web で答えが見つかりません。たぶん私のキーワードは間違っています。

そのため、Laravel 4 でアプリを開発しています。現在アクティブな環境に応じて、データベースに異なる値をシードする必要があります。

たとえば、ローカル環境にいる場合は、テスト データなどが必要です。しかし、実稼働環境にいるときは、管理者ユーザーのみが必要です。

Laravelにはそのためのソリューションが組み込まれていますか?

そうでない場合、どの環境がapp/seeds/DatabaseSeeder.phpファイルでアクティブになっているかを確認する方法を教えてください。そのため、環境に応じて異なるシーダーを呼び出すことができます。

4

1 に答える 1

11

希望する方法でさまざまな環境用の組み込みハンドラーはありません。

解決

シーダー クラス内では、App::environment()を使用して環境を検出し、それに基づいてロジックを実行できる必要があります。

各テーブル シーダー クラス内、またはDatabaseSeeder.phpファイル内に追加できます。

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

    if( App::environment() === 'development' )
    {
        $this->call('UserTableSeeder');
    } 
}

あるいは

app/config/database.phpファイル内に複数のデータベース接続を追加することを検討してください。そうすれば、環境ごとにシードする代わりに、同じ環境内の複数の接続からデータベースにデータを入力できます (環境は変更される可能性がありますが、2 つ以上の別個の db 接続を持つことができます)。

それがあなたのユースケースに当てはまる場合は、ここで複数のデータベース接続に関する私の回答を参照してください。

于 2013-07-09T19:36:36.320 に答える