Fala pessoal, tudo certo? Recentemente precisei criar uma API para consumo de dados e integrar junto ao WooCommerce, com isso logo fui atrás do Lumen, que já tinha escutado boas recomendações sobre e que tinha uma excelente estrutura para desenvolver APIs RESTful, sendo desenvolvido com este foco, para serviços e APIs.
E em um determinado momento precisei consultar 2 bancos diferentes, com isso veio a necessidade de conexões simultâneas e é disso que este post trata.
Por default, configurando o arquivo “.env” é possível setar a conexão para utilização de apenas um banco, mas e se precisar de 2? Simples, basta criar um diretório chamado config, e dentro dele criar um arquivo database.php
Com isto, nele coloque o array como descrito abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php return [ 'default' => 'mysql', 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '111.111.111'), 'port' => env('DB_PORT', 3306), 'database' => env('DB_DATABASE', 'mydb'), 'username' => env('DB_USERNAME', 'myuser'), 'password' => env('DB_PASSWORD', 'mypass'), 'charset' => env('DB_CHARSET', 'utf8'), 'collation' => env('DB_COLLATION', 'utf8_unicode_ci'), ], 'mysql2' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '222.222.222'), 'port' => env('DB_PORT', 3306), 'database' => env('DB_DATABASE', 'mydb2'), 'username' => env('DB_USERNAME', 'myuser2'), 'password' => env('DB_PASSWORD', 'mypass2'), 'charset' => env('DB_CHARSET', 'utf8'), 'collation' => env('DB_COLLATION', 'utf8_unicode_ci'), ], ] ]; |
Veja que em connections temos 2 conexões, a mysql e a mysql2, simples, e dentro de cada parâmetro seus respectivos dados.
E para realizar as consultas? É bem prático, tanto usando o app() helper quanto o DB facade, lembrando que para ter este último é necessário, no bootstrap/app.php descomentar a linha da chamada $app->withFacades();.
1 2 3 4 5 6 7 8 9 10 11 | //Chamando ao banco default, neste caso o mysql (setado no array de configuração) //usando o app() helper app('db')->connection()->select('SELECT ....'); // DB Facade DB::connection()->select('SELECT ....'); //Chamando ao banco pela conexão 'mysql2' //usando o app() helper app('db')->connection('mysql2')->select('SELECT ....'); // DB Facade DB::connection('mysql2')->select('SELECT ....'); |
E é isso, desta maneira consegue-se configurar diversas conexões e realizar chamadas a bancos diversos e de maneira simultânea.
O Lumen é fantástico, estou curtindo muito, o que me faz ter um enorme apreço pelo Laravel!
Até a próxima, grande abraço!