我正在与许多公司创建一个Web应用程序,每个公司都有一个数据库,因此我需要不断更改数据库,可以在auth提供程序上轻松地进行操作,但是我有一些不需要身份验证的外部链接
我与一个类进行动态连接
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坏了?
答案 0 :(得分:0)
使用此
try {
$db_connection = DB::connection('different_database');
dd($db_connection->getDatabaseName();
} catch(\PDOException $e) {
dd($e);
}
我现在只是模仿您的问题,这对我有用。 如果可行,它将转储数据库名称,否则捕获并转储错误