如何在Laravel 4中实现每个环境不同的种子数据?

5

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

所以我正在开发一个Laravel 4应用程序。根据当前活动环境,我需要使用不同的值来填充数据库。

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

Laravel有内置的解决方案吗?

如果没有,如何检查哪个环境在app/seeds/DatabaseSeeder.php文件中处于活动状态。这样我就可以根据环境调用不同的填充器。

1个回答

11

没有适合您需求的环境差异处理程序。

解决方案

在数据填充类(seeder class)中,您应该可以使用App::environment()来检测环境,并基于此执行逻辑。

您可以将其添加到每个表填充类中,或者添加到DatabaseSeeder.php文件中:

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

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

或者

考虑在你的app/config/database.php文件中添加多个数据库连接。这样,你就可以在同一环境中从多个连接填充数据库(环境仍然可以更改,但有2个或多个单独的数据库连接),而不是针对每个环境进行操作。

如果适合您的用例,请查看我在此处关于多个数据库连接的回答


谢谢。 :) 它帮助了我。 - Reflic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接