Mysql
 sql >> Database >  >> RDS >> Mysql

Laravel modifica i parametri del database in fase di esecuzione

Ho risolto in questo modo:

La parte di config::set era sbagliata, per accedere alla configurazione del database, dovrei usare lo stile punto (.), in questo modo:

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 poi riconnettiti a DB:

\Illuminate\Support\Facades\DB::reconnect();

Il mio consiglio per tutti coloro che hanno questo problema è di utilizzare una doppia connessione db, una per il db principale (db del server) e una per il db del cliente. In questo modo puoi passare ad entrambi i db, con questo semplice codice:

Config::set("database.default", "sqlsrvCustomer");
\Illuminate\Support\Facades\DB::reconnect();

Con il primo comando puoi scegliere il DB del cliente e con il secondo puoi collegarti ad esso.