Skip to main content

Introducción

Laravel soporta oficialmente las siguientes bases de datos:
  • MySQL / MariaDB
  • PostgreSQL
  • SQLite
  • SQL Server
Puedes usar la misma configuración de conexión con SQL en crudo, Query Builder o Eloquent ORM.
Esta página cubre las bases de la conexión. Para consultas prácticas, consulta Query Builder; para gestión del esquema, Migrations; y para carga inicial de datos, Seeding.

Configuración

La configuración se concentra en config/database.php. Con default eliges el nombre de la conexión por defecto, y en connections defines los detalles de cada conexión.
Como mínimo, configura lo siguiente en .env:
Para usar SQLite, configura DB_CONNECTION=sqlite y la ruta en DB_DATABASE.

Separación de conexiones de lectura y escritura

Si quieres separar las lecturas (SELECT) y las escrituras (INSERT / UPDATE / DELETE) en hosts distintos, configura read y write dentro de la misma conexión.
Al poner sticky a true, dentro de la misma solicitud las lecturas posteriores a una escritura se fijan en la conexión de escritura.
En configuraciones con retraso de replicación, activar sticky reduce el riesgo de leer datos antiguos justo después de una escritura.

Conexión pooled a PostgreSQL

Si utilizas un servicio gestionado de PostgreSQL con pooling en modo transacción como PgBouncer, configura las opciones pooled y direct.
Al activar pooled, Laravel enruta automáticamente las operaciones. Si dentro del código de la aplicación quieres usar explícitamente la conexión directa, añade el sufijo ::direct al nombre de la conexión.

Múltiples conexiones a base de datos

Puedes definir varias conexiones en config/database.php y cambiar entre ellas con DB::connection().

Ejecución de consultas SQL

La facade DB tiene métodos específicos por tipo de consulta.
No concatenes directamente entradas del usuario en la cadena SQL. Usa siempre argumentos con binding para evitar inyecciones SQL.

Escucha de consultas

Si quieres rastrear las consultas ejecutadas, registra DB::listen() en el boot() de un service provider.

Transacciones

Para tratar varias actualizaciones como una unidad, usa DB::transaction(). Si se lanza una excepción, Laravel hace rollback automáticamente.
Si necesitas reintentos por deadlock, pasa attempts.
Para un control manual, usa beginTransaction, rollBack y commit.

Próximos pasos

Query Builder

Aprende a construir consultas de forma segura utilizando la configuración de conexión.

Migrations

Aprende a versionar el esquema de la base de datos conectada.

Seeding

Aprende a poblar de forma reproducible datos para desarrollo y pruebas.
Última modificación el 13 de julio de 2026