Explicamos la configuración de conexiones a la base de datos en Laravel: separación read/write, múltiples conexiones, ejecución de SQL, escucha de queries y conceptos básicos de transacciones.
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.
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.
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.
La facade DB tiene métodos específicos por tipo de consulta.
use Illuminate\Support\Facades\DB;$users = DB::select('select * from users where active = ?', [1]);DB::insert('insert into users (name, email) values (?, ?)', ['Taylor', '[email protected]']);$affected = DB::update('update users set votes = 100 where name = ?', ['Taylor']);$deleted = DB::delete('delete from sessions where user_id = ?', [1]);DB::statement('drop table temporary_imports');
No concatenes directamente entradas del usuario en la cadena SQL. Usa siempre argumentos con binding para evitar inyecciones SQL.
Para tratar varias actualizaciones como una unidad, usa DB::transaction().
Si se lanza una excepción, Laravel hace rollback automáticamente.
use Illuminate\Support\Facades\DB;DB::transaction(function () { DB::update('update users set votes = 1'); DB::delete('delete from posts where archived = 1');});
Si necesitas reintentos por deadlock, pasa attempts.