6

我可能完全误解了它是如何工作的,但实现这一目标的最佳方法是什么?我有一些想法,但它似乎很hacky。

我有一组用于测试我的应用程序的示例数据。这是通过 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 回答