动态创建.env文件,然后迁移并播种数据库

时间:2017-02-14 14:06:07

标签: php database laravel laravel-5 laravel-5.4

我正在尝试在Laravel 5.4中编写一个控制台命令,它允许我动态创建.env文件,然后运行数据库迁移和播种器。

/**
 * Execute the console command.
 *
 * @return mixed
 */
public function handle() {
    // Check if we already have an .env file.
    if(!$this->envFileExists()) {
        // Create the .env file
        $this->createEnvFile();
        $this->info('Environment file successfully created.');
    }

    // Generate application key
    Artisan::call('key:generate');
    $this->info('Application key successfully generated.');

    // Migrate
    Artisan::call('migrate:install');
    $this->info('Migrations table successfully created.');
    Artisan::call('migrate:refresh');
    $this->info('All tables successfully migrated.');

    // Seed
    Artisan::call('db:seed');
    $this->info('All tables successfully seeded.');
}

代码成功创建.env文件并生成并存储应用程序密钥,但无法迁移数据库。

[PDOException] SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)

我假设这意味着应用程序在创建后不会读取.env文件,即使它正确地在正确的文件中创建应用程序密钥。

如果我第二次运行该命令,则.env文件已存在后,一切都正常运行:数据库已迁移并播种。很明显,.env文件正在正确创建,并且Laravel在初始安装时由于某些原因而无法识别它。

如何在创建后强制Laravel使用新的.env文件?

1 个答案:

答案 0 :(得分:1)

config:cache

之前调用migrate:install命令