5 formas de usar múltiples bases de datos en Laravel


Guadalupe

29 Mar 2023

¿Estás aprendiendo a usar Laravel desde cero? ¿Sabías que este framework te permite conectar múltiples bases de datos con diferentes motores? ¡Así es! Laravel reutiliza los componentes existentes de diferentes frameworks que ayudan a crear una aplicación web perfecta y excepcional.

Mientras que el desarrollo de una aplicación web algunas veces tenemos que utilizar múltiples bases de datos debido a los requisitos del proyecto a gran escala, en este momento Laravel permite utilizar múltiples conexiones de base de datos. A continuación, te explicamos cómo utilizar múltiples bases de datos con Laravel. ¡Comencemos!

¿Cómo se configura la base de datos en Laravel?

La configuración de los servicios de base de datos de Laravel se encuentra en el archivo de configuración config/database.php de tu aplicación. En este archivo, puedes definir todas tus conexiones de base de datos, así como especificar qué conexión se debe utilizar por defecto. 

La mayoría de las opciones de configuración dentro de este archivo son controladas por los valores de las variables de entorno de tu aplicación. En este archivo, se proporcionan ejemplos para la mayoría de los sistemas de bases de datos soportados por Laravel.

Por defecto, la configuración de entorno de ejemplo de Laravel está lista para usar con Laravel Sail, que es una configuración Docker para desarrollar aplicaciones en tu máquina local. Sin embargo, eres libre de modificar la configuración de la base de datos según sea necesario para tu base de datos local.

Configuración de SQLite

sql

Las bases de datos SQLite están contenidas en un único archivo de su sistema de archivos. Puedes crear una nueva base de datos SQLite utilizando el comando touch en tu terminal: touch base de datos/base de datos.sqlite. Una vez creada la base de datos, puedes configurar fácilmente las variables de entorno para que apunten a esta base de datos colocando la ruta absoluta a la base de datos en la variable de entorno DB_DATABASE:

DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite

Configuración de Microsoft SQL Server

Para utilizar una base de datos de Microsoft SQL Server, debes asegurarte de tener instaladas las extensiones de PHP sqlsrv y pdo_sqlsrv, así como cualquier dependencia que puedan requerir, como el controlador ODBC de Microsoft SQL.

Configuración mediante URL

Normalmente, las conexiones a bases de datos se configuran utilizando múltiples valores de configuración como host, base de datos, nombre de usuario, contraseña, etc. Cada uno de estos valores de configuración tiene su correspondiente variable de entorno. Esto significa que cuando se configura la información de conexión a la base de datos en un servidor de producción, es necesario gestionar varias variables de entorno.

Algunos proveedores de bases de datos gestionadas, como AWS y Heroku, proporcionan una única "URL" de base de datos que contiene toda la información de conexión para la base de datos en una sola cadena.

Te puede interesar: Descubre 5 tips de PHP que todo programador debe saber

¿Cómo usar múltiples bases de datos en Laravel?

Ahora que ya sabemos cómo se configura la base de datos en Laravel, es momento de entender cómo se usa. Por ello, en este apartado te explicaremos de forma sencilla cómo usar las bases de datos:

#1. Añade detalle de conexión a base de datos en .env

como usar base de datos

Para añadir detalle de conexión a base de datos en .env, puedes optar por múltiples si quieres usar más bases de datos, también puedes ir con otros motores de bases de datos. Aquí usamos MySQL:

DB_HOST_SECOND="DB HOST HERE"
DB_PORT_SECOND="DB PORT HERE"
DB_DATABASE_SECOND="DATABASE NAME HERE"
DB_USERNAME_SECOND="DB USERNAME HERE"
DB_PASSWORD_SECOND="DB PASSWORD HERE"

#2. Configura detalle de base de datos en config/database.php

Para ello, debes añadir detalle en la matriz de conexiones. Recuerda incorporar todos los detalles de la conexión a la base de datos. En este ejemplo, añadimos solo los detalles de la base de datos para fines de aprendizaje:

<?php

return [
   'connections'=>[
     'mysql'=>[
       'driver' => 'mysql',
       'url' => env('DATABASE_URL'),
       'host' => env('DB_HOST', '127.0.0.1'),
       'port' => env('DB_PORT', '3306'),
       'database' => env('DB_DATABASE', 'forge'),
       'username' => env('DB_USERNAME', 'forge'),
       'password' => env('DB_PASSWORD', ''),
     ],
     'mysql_second'=>[
       'driver' => 'mysql',
       'url' => env('DATABASE_URL'),
       'host' => env('DB_HOST_SECOND', '127.0.0.1'),
       'port' => env('DB_PORT_SECOND', '3306'),
       'database' => env('DB_DATABASE_SECOND', 'forge'),
       'username' => env('DB_USERNAME_SECOND', 'forge'),
       'password' => env('DB_PASSWORD_SECOND', ''),
     ]
   ]
];

?>

#3. Utiliza Schema Builder

Con Schema Builder, puedes usar cualquier conexión simplemente ejecutando el método connection(). Por tanto, te animamos a usarlo para que puedas emplear cualquier conexión. Sigue este comando:

Schema::connection('mysql_second')->create('table_name', function($table){
   // entire code here
});

#4. Emplea Query Builder 

De forma similar al Schema Builder, puedes definir una conexión en Query Builder ejecutando el siguiente commando:

$posts = \DB::connection('mysql_second')->select('id','title')->get();

#5. Haz uso del modelo Eloquent

De forma similar al Query Builder, puedes definir una conexión en el Modelo Eloquent con el siguiente comando:

<?php

namespace App\Models;

class Post extends Eloquent {
   protected $connection = 'mysql_second';
}

?>

Además, puedes utilizar la conexión en consultas join personalizadas con este sencillo ejemplo:

\DB::table('posts')->join('mysql_second.types as secondDbType','posts.code','=','secondDbType.code')->first();

¡Ahora ya sabes más sobre el uso de múltiples bases de datos en tu aplicación Laravel! Como ves, este framework te permite conectar múltiples bases de datos con diferentes motores de bases de datos. ¡Esperamos que esta información te haya sido de ayuda!

¿Te gustaría aprender a programar? En Coders Free contamos con diversos cursos online con todos los niveles de programación, así como servicios de diseño gráfico para hacer crecer tu negocio. ¡Contáctanos para obtener más información!


0 comentarios

Inicia sesión para comentar