Configuración Dinámica de conexión para Bases de datos en Laravel

conexion multiple bases de datos laravel


Hoy surfeando por internet en busca de la solución a mi problema.

Básicamente lo que necesitaba era que pudiera crear una conexión a una base de datos pero sin necesidad de tener la configuración en la ruta config/app.php que es donde se guardan los datos de conexión de las bases de datos a la que se va conectar laravel.

Ya que los datos de la conexión de las bases de datos las tenia en la base de datos principal la cual laravel estaba manejando.

En entonces mi problema se resumía en obtener los datos de conexión de la base de datos principal y pasarlas a las variables para que se pudiera crear la conexión.

Luego de como 30 minutos de echar ojo en el mejor amigo de un programador StackOverFlow  puedo encontrar la solucion.

Lo primero que se necesita es crear una variable que contiene un array asociativo como el del archivo de configuracion de las bases de datos, el mio se ve algo asi.

$configDb = array(
        'driver' => 'sqlsrv',
        'host' => 's14',
        'database' => 'kdbname',
        'username' => 'sa',
        'password' => '123456',
        'charset' => 'utf8',
        'prefix' => '',
    );

Obviamente aca aun no la he concatenado con las variables que contiene los datos de conexion pero de igual forma asi es.

El siguiente paso es correr la siguiente linea

\Config::set('database.connections.DB_Serverr', $configDb);


Esta linea es la que hace toda la tarea 😋.

Se encarga de ingresar los datos de configuración ingresado en el array al archivo de configuración de las bases de datos pero obviamente de manera temporal, no escribe esa configuración en el archivo, asi que el archivo no se ve afectado.

Ahora notese que en esa linea archa el string 'database.connections.DB_Serverr' donde DB_Serverr corresponde al nombre de la conexión que yo muy sutilmente le he puesto entonces es necesario que estén pendientes que nombre le colocan para luego hacer la conexión.

Ahora solo con la linea

$conexionSQL = \DB::connection('DB_Serverr');


Se hace la conexión y bualaaa ya se puede comenzar a hacer querys como por ejemplo.

$datos = $conexionSQL->select('select id from dbo.scopeToOrgMap');

Referencias

  • https://stackoverflow.com/questions/17410049/laravel-4-connect-to-other-database


0 Comentarios