How to use multiple database in Lumen
First, you'll need to configure your connections. If you don't already have one you'll need to create a config
directory in your project and add the file config/database.php
. It might look like this:
<?phpreturn [ 'default' => 'accounts', 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST'), 'port' => env('DB_PORT'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], 'mysql2' => [ 'driver' => 'mysql', 'host' => env('DB2_HOST'), 'port' => env('DB_PORT'), 'database' => env('DB2_DATABASE'), 'username' => env('DB2_USERNAME'), 'password' => env('DB2_PASSWORD'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], ],];
Once you've added your connection
configurations, you can access them by getting the database manager object out of the container and calling ->connection('connection_name')
.
// Use default connectionapp('db')->connection()->select('xx');DB::connection()->select('yy');// Use mysql2 connectionapp('db')->connection('mysql2')->select('xx');DB::connection('mysql2')->select('yy');
Hope this helps you!!
This also worked. In the current version of Lumen 5.7
config/database.php
<?phpreturn [ 'default' => env('DB_CONNECTION', 'sqlsrv'), 'migrations' => 'migrations', 'connections' => [ 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, ], 'sqlsrv2' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE2', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, ], ],];
.env
DB_CONNECTION=sqlsrvDB_HOST=localhostDB_PORT=1433DB_DATABASE=database1DB_USERNAME=usernameDB_PASSWORD=passwordDB_DATABASE2=database2
Usage:
Model: protected $connection = 'sqlsrv2';
Other: ->connection('sqlsrv2')
I hope i help you!
Reference:https://fideloper.com/laravel-multiple-database-connections