Banco de dados multipla conexão com bancos diferentes

1,132 views
Skip to first unread message

Tadeu Gonçalves

unread,
Jan 15, 2018, 7:50:50 PM1/15/18
to Laravel Brasil
Boa noite, estou iniciando com o Laravel e tenho uma duvida sobre como conectar dois bancos de dados...

No caso eu tenho um banco que será o da aplicação esse consigo acessa normal pois crio a tabelas com o migrate.

O segundo banco é Oracle e está em produção, preciso conectar no mesmo, tenho que criar o migrate para ele também?

Não consigo conectar e apresenta o erro:

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "TABELA" does not exist LINE 1: select * from "TABELA" ^ (SQL: select * from "TABELA")....


will lima

unread,
Jan 16, 2018, 5:53:59 AM1/16/18
to Laravel Brasil
Estou com o mesmo problema, entretanto estou usando dois bancos SQLServer, a solução que encontrei '' paliativa'' foi duplicar o arquivo na pasta .env mas ainda assim continuo com o erro. ele encontra apenas o primeiro banco... 

Renato de Oliveira Lucena

unread,
Jan 16, 2018, 3:11:40 PM1/16/18
to Laravel Brasil
assunto interessante, também passei por isso, gostaria de saber.


Em segunda-feira, 15 de janeiro de 2018 22:50:50 UTC-2, Tadeu Gonçalves escreveu:

Clodoaldo Bragato Lopes

unread,
Jan 16, 2018, 6:43:28 PM1/16/18
to Laravel Brasil
Boa noite pessoal, 

Já passei por isso e na verdade não é tão difícil de resolver. 

Vamos lá: 
1 - Configuração 
     Dentro da pasta config de seu projeto laravel tem um arquivo database.php. Ele define um array de configurações para conexão com banco de dados. O primeiro item desse array define a conexão default, na verdade indica qual é a conexão default. Logo abaixo vem as conexões propriamente ditas como no exemplo abaixo 


'connections' => [
        'l4t_administrador' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'l4t_administrador'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'FR&&BSDCMM'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
        'l4t_atendimento'=>[
           'driver' => 'mysql',
           'host' => env('DB_HOST', '127.0.0.1'),
           'port' => env('DB_PORT', '3306'),
           'database' => env('DB_DATABASE', 'l4t_atendimento'),
           'username' => env('DB_USERNAME', 'root'),
           'password' => env('DB_PASSWORD', 'FR&&BSDCMM'),
           'unix_socket' => env('DB_SOCKET', ''),
           'charset' => 'utf8mb4',
           'collation' => 'utf8mb4_unicode_ci',
           'prefix' => '',
           'strict' => true,
           'engine' => null,
        ],...

Perceba  que cada conexão carrega um driver que é usado para conexão com o Servidor de banco de dados. Certifique-se de que o driver de seu banco de dados está instalado para o laravel (mais detalhes consulte a documentação oficial) 
Você pode utilizar as variáveis setadas no arquivo .env para fazer as configurações. 

Uma vez criadas as conexões seu trabalho continua na Model: dentro da Class de cada model você deve criar um atributo protegido chamado connection conforme abaixo

class Modelo extends Model {
   protected $connection='nome_conexao';
   protected $table='nome_tabela';
}

E aproveitando o ensejo você deve também indicar o nome da tabela. 

E voilà!







Em segunda-feira, 15 de janeiro de 2018 22:50:50 UTC-2, Tadeu Gonçalves escreveu:
Reply all
Reply to author
Forward
0 new messages