drupal-header

Drupal: conectar a una base de datos externa al vuelo

La motivación es simple. A veces necesitamos conectarnos a una DB externa pero no queremos tener que andar tocando settings.php para agregar una DB. un caso práctico sería un módulo que después de instalado se conecta a una DB externa, o un módulo que te deja especificar los datos de conexión por UI para luego conectarse por mencionar algún ejemplo.

Para poder conectar con una DB externa “on the fly” lo primero que tenemos que hacer es declarar la DB:

El código anterior se puede declarar justo antes de hacer una query y no depende del cache.
Explico muy rápido algunos detalles:
temporal‘ es solo un “grupo” y lo llamé así pero podría llamarlo como quisiera. ‘temporal’ está bien para este caso de uso.
Si, el nombre de tu DB se repite 2 veces.

Bueno ya tenemos declarada nuestra DB, por lo que ya podemos operar normalmente:

Como pueden ver, para usar la DB que acabamos de registrar tenemos que especificarlo en Database::getConnection(‘mi_basededatos’, ‘temporal’)
Y si, los parámetros van al revés que en Database::addConnectionInfo()