如何在Laravel 4中为每个环境设置不同的播种机?

时间:2013-07-09 19:00:27

标签: php laravel laravel-4 eloquent seeding

我有一个简单的问题,但我没有在网上找到答案。也许我的关键字是假的。

所以我在Laravel 4中开发一个应用程序。我需要根据当前的活动环境为数据库添加不同的值。

例如,如果我在本地环境中,我想要测试数据,依此类推。但是当我在生产环境中时,我只想拥有一个管理员用户。

Laravel是否有内置的解决方案?

如果没有,如何检查app/seeds/DatabaseSeeder.php文件中哪个环境处于活动状态。所以我可以根据环境调用不同的播种机。

1 个答案:

答案 0 :(得分:9)

对于不同的环境,没有您希望的内置处理程序。

解决方案

在播种器类中,您应该能够使用App::environment()来检测环境,并根据它做逻辑。

您可以在DatabaseSeeder.php文件中的每个表播种器类中添加:

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

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

替代地

考虑在app/config/database.php文件中添加多个数据库连接。这样,您可以在同一环境中从多个连接填充数据库,而不是为每个环境设置种子(环境仍然可以更改,但有两个或更多单独的数据库连接)。

如果符合您的使用案例,请参阅我的answer on multiple database connections here