Laravel – Как загрузить обновленную информацию о подключении к базе данных из файла .env?
Я пытаюсь написать приложение типа установщика, используя Laravel 10. Где цель: если я не установлю информацию о базе данных, она перенаправит меня в базу данных установки. Когда я заполняю форму и отправляю, она выполняет следующую задачу:
- Обновите содержимое, связанное с базой данных, в файле .env.
- Очистите кэш, конфигурацию и, наконец, кэшируйте новую конфигурацию с помощью вызова.
- Наконец, перенесите базу данных, все еще используя
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();
Кто-нибудь знает, что я пропустил, что решит проблему?