Cómo usar múltiples bases de datos en Laravel
Laravel hace posible la conexión a diferentes bases de datos de la manera más fácil posible, actualmente soporta los motores de base de datos más populares:MySQL, PostgreSQL, SQLite y SQLServer, y por eso nos hace siempre felices.
En aplicaciones y proyectos web sencillos es común tener una conexión a una sola base de datos, la cual es más que suficiente para almacenar y leer la información administrada por nuestro proyecto. En aplicaciones web más robustas, de mayor tamaño o con requerimientos muy especiales surge la necesidad de utilizar múltiples bases de datos, una para leer, otra para escribir la información o tal vez una base de datos que tiene algún propósito especial en otro sistema.
Configuración
Primero que todo debemos realizar la configuración de las conexiones, esta configuración se hace en el archivoCódigo :
app/config/database.php.
En este archivo puedes establecer la configuración para todas las bases de datos que necesites, de forma predeterminada Laravel provee cuatro configuraciones de ejemplo para cada uno de los motores de base de datos mencionados:
Código :
'connections' => array( 'sqlite' => array( 'driver' => 'sqlite', 'database' => __DIR__.'/../database/production.sqlite', 'prefix' => '', ), 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 'pgsql' => array( 'driver' => 'pgsql', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ), 'sqlsrv' => array( 'driver' => 'sqlsrv', 'host' => 'localhost', 'database' => 'database', 'username' => 'root', 'password' => '', 'prefix' => '', ), ),
Si necesitas una nueva conexión solo basta con añadirla al arreglo de conexiones y establecerle un nombre único:
Código :
'connections' => array( 'stark' => array( 'driver' => 'mysql', 'host' => 'westeros', 'database' => 'database', 'username' => 'JonSnow', 'password' => 'Y0uN0th1ngJ0nS4nw', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 'lannister' => array( 'driver' => 'mysql', 'host' => 'westeros', 'database' => 'database', 'username' => 'Joffrey', 'password' => 'Wh0R3memb3rTh4atL1ttleB1tch?', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), ),
En el archivo de configuración también se puede establecer la conexión de base de datos que se usará de forma predeterminada, es la opción siguiente:
Código :
'default' => 'mysql'
Uso de múltiples conexiones en Laravel
El uso de diferentes conexiones es, como bien sabemos, muy fácil e intuitivo en Laravel:
Esquema
Para definir el esquema de base de datos usa el método:Código :
Schema::connection
Código :
Schema::connection('stark')->create('deaths', function($table) { $table->increments('id'); $table->string('type'); $table->string('name'); });
Consultas
Si estás usando el constructor de consultas simples usa el método:Código :
DB::connection
Código :
$users = DB::connection('lannister')->select(...);
Eloquent
Si estás usando Eloquent puedes definir la conexión de base de datos en el modelo a través de la propiedadCódigo :$connection
Código :
<?php class Death extends Eloquent { protected $connection = 'stark'; }
Tiempo de ejecución
Si necesitas cambiar de conexión de base de datos durante la ejecución de alguna función puedes hacerlo con el método:Código :
setConnection
el cual recibe como parámetro el nombre de la conexión:
Código :
<?php class KillController extends BaseController { public function decapitate() { $death = new Death; $death->setConnection('lannister'); $joffrey = $death->find(1); return $joffrey; } }
Como vimos Laravel ofrece soluciones sencillas a los problemas comunes que surgen en nuestras aplicaciones web.
Comentarios
Publicar un comentario