Laravel – Как загрузить обновленную информацию о подключении к базе данных из файла .env?

Я пытаюсь написать приложение типа установщика, используя Laravel 10. Где цель: если я не установлю информацию о базе данных, она перенаправит меня в базу данных установки. Когда я заполняю форму и отправляю, она выполняет следующую задачу:

  1. Обновите содержимое, связанное с базой данных, в файле .env.
  2. Очистите кэш, конфигурацию и, наконец, кэшируйте новую конфигурацию с помощью вызова.
  3. Наконец, перенесите базу данных, все еще используяArtisanвызов.

Хотя содержимое файла обновляется, оно по-прежнему использует последнюю информацию о базе данных, существовавшую до обновления. Я имею в виду, предположим, что ранее имя БД было , затем я обновляю его до ,.envфайл показывает имя БД какnn_setup, но браузер отвечает:

Неизвестная база данныхab_setup(Соединение: mysql, SQL: выберите * из information_schema.tables, где table_schema = nn_setup и table_name = миграции и table_type = 'БАЗОВАЯ ТАБЛИЦА').

Я понятия не имею, что на самом деле не так. Вот мой код:

      // Update .env file content
$envContent = [
    'DB_CONNECTION' =>  $request->database_connection,
    'DB_HOST'       =>  $request->database_host,
    'DB_PORT'       =>  $request->database_port,
    'DB_DATABASE'   =>  $request->database_name,
    'DB_USERNAME'   =>  $request->database_username,
    'DB_PASSWORD'   =>  $request->database_password
];

foreach( $envContent as $key => $value ) {
    $this->replace_env_value($key, $value);
}

// Clear Cache and Config & Cache new Config
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('config:cache');

// Migrate DB and Seed
Artisan::call('migrate');
Artisan::call('db:seed');

// Create Admin User
$user = new User();
$user->name = $request->admin_name;
$user->email = $request->admin_username;
$user->password = Hash::make($request->admin_password);
$user->save();

Кто-нибудь знает, что я пропустил, что решит проблему?

0 ответов

Другие вопросы по тегам