Laravel не может получить правильное имя базы данных с помощью DB :: getDatabaseName () - PullRequest
0 голосов
/ 17 апреля 2019

Я создаю веб-приложение со многими компаниями, и у каждой из них есть одна база данных, поэтому мне нужно постоянно менять базу данных, я могу легко сделать это на провайдере аутентификации, но у меня есть некоторые внешние ссылки, которые не требуют аутентификации

Я устанавливаю динамическое соединение с классом

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сломан?

1 Ответ

0 голосов
/ 17 апреля 2019

используйте это

try {
   $db_connection = DB::connection('different_database');
   dd($db_connection->getDatabaseName();
} catch(\PDOException $e) {
   dd($e);     
}

Я просто подражал вашей проблеме сейчас, и это сработало для меня.если он работает, он выдаст имя БД, иначе вылов и ошибка дампа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...