Laravel Raw Database Connection
In a Laravel project, I needed to connect to multiple databases given the live configuration provided by the user. All comments found online were about invoking configurations saved in the proper config/database.php
file, just not my case.
After a little investigation into the core code, I found this way to obtain a raw connections:
$factory = App::make('db.factory');
$config = [
'driver' => $this->argument('driver'),
'host' => $this->argument('host'),
'username' => $this->argument('username'),
'password' => $this->argument('password'),
'database' => $this->argument('database'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false
];
$my_database = $factory->make($config);
(In this specific example I'm getting arguments for a console command and providing some default, but you got the point).
The key is that db.factory
singleton of vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php
inited in vendor/laravel/framework/src/Illuminate/Database/DatabaseServiceProvider.php
; here more documentation about the notion of "singleton".