Php Laravel DB种子-测试数据与样本数据

Php Laravel DB种子-测试数据与样本数据,php,laravel,laravel-4,fixtures,seeding,Php,Laravel,Laravel 4,Fixtures,Seeding,我可能误解了这到底是怎么回事,但实现这一点的最佳方法是什么?我有个想法,但似乎有些不对劲 我有一组样本数据,用于测试我的应用程序。这是通过内置在拉雷维尔播种机播种。其中包含示例用户、地址、文档等内容 我还有一组默认数据,应该用于生产。目前,我直接将其添加到迁移中。例如,如果我正在为account_角色添加一个表,我可能会在迁移的底部包含以下内容 $account_admin = array('role' => 'Account Administrator', 'flag' => 'A

我可能误解了这到底是怎么回事,但实现这一点的最佳方法是什么?我有个想法,但似乎有些不对劲

我有一组样本数据,用于测试我的应用程序。这是通过内置在拉雷维尔播种机播种。其中包含示例用户、地址、文档等内容

我还有一组默认数据,应该用于生产。目前,我直接将其添加到迁移中。例如,如果我正在为account_角色添加一个表,我可能会在迁移的底部包含以下内容

$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);
这样,在生产环境中,我只需迁移数据库以插入任何生产就绪的数据库值,在登台/开发环境中,我可以刷新迁移,然后使用示例数据为数据库种子


还有其他(更好的)方法吗?

您可以在播种器文件中对当前环境进行检查,并根据需要进行播种

<?php

class DatabaseSeeder extends Seeder {

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

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

}

这是可行的,但是,为了澄清正确的语法是:
if(App::environment()==='production'){…}