4

我有以下路线:

Route::get('/beneficiaries/seed', function () {
    echo "<p>Database seeding started...</p>";
    $exitCode = Artisan::call('db:seed');
    echo "<p>Database seeding completed.</p>";
});

在我的本地环境中,当我访问“/beneficiaries/seed”时,它会为数据库播种。但如果我在生产中做同样的事情,它不会。我刚刚复制了播种机类和路由文件。

数据库播种机:

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        $this->call(BeneficiariesTableSeeder::class);
    }
}

受益人TableSeeder:

class BeneficiariesTableSeeder extends Seeder
{
    public function run()
    {
        //seeding logic...
    }
}

为什么我的生产 Artisan 命令没有被执行?(我没有使用数据库事务。即使没有它,本地数据库也会被播种,因为没有引发错误。)

4

1 回答 1

6

当您php artisan db:seed在生产环境中运行时,会出现一个警告,询问您是否确定在生产环境中植入数据库。

Artisan::call('db:seed')生产中的此警告确认是无法在生产中工作的原因。

为了规避警告,您可以--force像这样使用标志:php artisan db:seed --force.

解决方案

要在代码中执行相同操作,请使用Artisan::call('db:seed', ['--force' => true]);

于 2018-03-07T18:50:30.407 回答