Я пытаюсь написать консольную команду в Laravel 5.4, которая позволит мне динамически создавать .env-файл, а затем запускать миграцию и сеялку базы данных.Динамически создайте файл .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 и генерирует и сохраняет ключ applicaiton, но не в состоянии перенести базу данных.
[PDOException] SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)
Что я предполагаю, что означает, что приложение не читает файл .env после того, как он был создан, даже если он правильно создать ключ приложения в правом файле.
Если я запустил команду во второй раз, после того, как файл .env уже существует, все выполняется правильно: база данных переносится и выгружается. Поэтому ясно, что файл .env создается правильно и что Laravel просто не узнает его по какой-либо причине на его начальной установке.
Как заставить Laravel использовать новый .env-файл после его создания?
ли вы пробовали вызов «конфигурации: кэш» перед «мигрировать: установить»? –
Поскольку фреймворк уже загружен, он не загрузит созданный файл env. – Neat
«config: cache» сделал трюк. Если вы напишете его как ответ @MarcosKubis, я могу его принять. Спасибо! – user2759865