Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Laravel altera os parâmetros do banco de dados em tempo de execução


Resolvi desta forma:

A parte do config::set estava errada, para acessar a configuração do banco de dados, devo usar o estilo ponto (.), desta forma:
Config::set("database.connections.sqlsrv.host", Crypt::decrypt($cliente->Server));
Config::set("database.connections.sqlsrv.database", $cliente->NomeDB);
Config::set("database.connections.sqlsrv.username", Crypt::decrypt($cliente->Username));
Config::set("database.connections.sqlsrv.password", Crypt::decrypt($cliente->Password));

E, em seguida, reconecte-se ao DB:
\Illuminate\Support\Facades\DB::reconnect();

Meu conselho para todos que têm esse problema, é usar uma conexão db dupla, uma para o db principal (db do servidor) e outra para o db do cliente. Dessa forma, você pode alternar para os dois db, com este código simples:
Config::set("database.default", "sqlsrvCustomer");
\Illuminate\Support\Facades\DB::reconnect();

Com o primeiro comando você pode escolher o banco de dados do cliente e com o segundo você pode se conectar a ele.