Configurazione delle connessioni al database di Laravel, separazione read/write, connessioni multiple, esecuzione di SQL, ascolto delle query e nozioni di base sulle transazioni.
Laravel supporta ufficialmente i seguenti database.
MySQL / MariaDB
PostgreSQL
SQLite
SQL Server
Puoi usare le stesse impostazioni di connessione sia con SQL grezzo, sia con Query Builder, sia con Eloquent ORM.
Questa pagina copre le premesse sulle connessioni al database. Per le query pratiche consulta Query Builder, per la gestione dello schema le Migration, per l’inserimento dei dati iniziali il Seeding.
La configurazione del database è concentrata in config/database.php.
Con default scegli la connessione predefinita e con connections definisci i dettagli di ciascuna.
La facade DB fornisce metodi dedicati per ciascun tipo di query.
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');
Non concatenare input degli utenti direttamente nelle stringhe SQL. Usa sempre parametri di binding per prevenire SQL injection.
Per trattare più aggiornamenti come un’unica unità, usa DB::transaction().
Se si verifica un’eccezione, Laravel effettua automaticamente il rollback.
use Illuminate\Support\Facades\DB;DB::transaction(function () { DB::update('update users set votes = 1'); DB::delete('delete from posts where archived = 1');});
Se ti servono retry per deadlock, puoi specificare attempts.