Skip to main content

Cos’è il Query Builder

Il Query Builder di Laravel offre un’interfaccia fluida per costruire ed eseguire query sul database. Parte da DB::table() e concatena i metodi.
Internamente usa il parameter binding di PDO, quindi la protezione da SQL injection è automatica.
Il Query Builder funziona su tutti i database supportati (MySQL, MariaDB, PostgreSQL, SQLite, SQL Server). Il codice non cambia cambiando database.

Quando usare il Query Builder o Eloquent

Recupero dei dati

Tutti i record

get() restituisce Illuminate\Support\Collection. Ogni record è uno stdClass.

Un solo record

Elenchi di colonne

Elaborazione a blocchi

Se aggiorni/elimini record mentre esegui chunk, usa chunkById() per evitare disallineamenti.

Streaming (LazyCollection)

Aggregazioni

Verifica esistenza

SELECT

WHERE

Condizioni base

Raggruppamento

whereIn / whereBetween / whereNull

whereLike

whereAny / whereAll

whereNullSafeEquals

whereNullSafeEquals (e orWhereNullSafeEquals) confronta considerando due NULL come uguali. L’operatore = normale rende NULL = NULL come false; con whereNullSafeEquals invece i NULL sono uguali. Corrisponde a <=> di MySQL e IS NOT DISTINCT FROM di PostgreSQL.
Il classico where('column', null) diventa WHERE column IS NULL; whereNullSafeEquals('column', $value) funziona in modo coerente anche quando il valore associato è o non è null. Molto utile con input utente potenzialmente nullo.

JOIN

JOIN con sottoquery

Ordinamento, raggruppamento, limit

Sottoquery

Espressioni Raw

Le espressioni Raw vengono inserite come SQL. Passare input utente direttamente causa SQL injection. Usa sempre binding.

INSERT / UPDATE / DELETE

INSERT

UPSERT

UPDATE

DELETE

Query condizionali (when)

Debug

dd() è comodo in debug ma non usarlo in produzione. toSql() e getBindings() sono più sicuri.
Il Query Builder è più a basso livello e restituisce stdClass. Se non ti servono relazioni ed eventi dei modelli è più semplice e veloce.
Ultima modifica il 13 luglio 2026