Introducción
Laravel soporta oficialmente las siguientes bases de datos:- MySQL / MariaDB
- PostgreSQL
- SQLite
- SQL Server
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 enconfig/database.php.
Con default eliges el nombre de la conexión por defecto, y en connections defines los detalles de cada conexión.
.env:
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.
sticky a true, dentro de la misma solicitud las lecturas posteriores a una escritura se fijan en la conexión de escritura.
Evitar lecturas obsoletas también en las siguientes solicitudes
sticky solo tiene efecto dentro de la misma solicitud. Si quieres leer los datos recién escritos también en las solicitudes posteriores de la misma sesión, añade el middleware PreventStaleDatabaseReads al grupo de middleware web.
for.
StartSession. No afecta a las lecturas de otras sesiones ni de otras conexiones de base de datos.
Leer temporalmente desde la conexión de escritura
Para fijar las lecturas dentro de un callback en la conexión de escritura, usa el métodousingWritePdo de la conexión.
Conexión pooled a PostgreSQL
Si utilizas un servicio gestionado de PostgreSQL con pooling en modo transacción como PgBouncer, configura las opcionespooled y direct.
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 enconfig/database.php y cambiar entre ellas con DB::connection().
Ejecución de consultas SQL
La facadeDB tiene métodos específicos por tipo de consulta.
Escucha de consultas
Si quieres rastrear las consultas ejecutadas, registraDB::listen() en el boot() de un service provider.
Transacciones
Para tratar varias actualizaciones como una unidad, usaDB::transaction().
Si se lanza una excepción, Laravel hace rollback automáticamente.
attempts.
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.