Я создаю веб-приложение со многими компаниями, и у каждой из них есть одна база данных, поэтому мне нужно постоянно менять базу данных, я могу легко сделать это на провайдере аутентификации, но у меня есть некоторые внешние ссылки, которые не требуют аутентификации
Я устанавливаю динамическое соединение с классом
class DatabaseConnection {
public static function setConnection($env_connection)
{
$env_connection = strtoupper($env_connection);
config(['database.connections.mysql' => [
'driver' => 'mysql',
'host' => env("DB_{$env_connection}_HOST"),
'database' => env("DB_{$env_connection}_DATABASE"),
'username' => env("DB_{$env_connection}_USERNAME"),
'password' => env("DB_{$env_connection}_PASSWORD"),
'strict' => false,
]]);
DB::reconnect('mysql');
}
}
Когда я пытаюсь получить имя базы данных для некоторых тестов, мне возвращается forge
значение по умолчанию, которое я не сделалнастроить, это означает, что у меня не должно быть возможности получить пользователей, но я знаю, DB::table('users')->count()
получает правильное соединение, но DB::getDatabaseName()
не
DatabaseConnection::setConnection('different_database');
dump(DB::getDatabaseName()); \\ returns 'forge' instead of 'different_database'
dd(DB::table('users')->count()); \\ returns 3, thats the users from 'different_database' database
Я делаю что-то не так или laravelсломан?