Cos’è il Query Builder
Il Query Builder di Laravel offre un’interfaccia fluida per costruire ed eseguire query sul database. Parte daDB::table() e concatena i metodi.
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
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
Ricerca per similarità vettoriale
Per le colonne che memorizzano vettori di embedding,whereVectorSimilarTo consente di filtrare i record vicini a un vettore specifico. Le colonne vettoriali si definiscono nelle migrazioni con il tipo vector (vedi colonne vettoriali nelle migrazioni).
whereVectorSimilarTo ordina i risultati dal più simile al meno simile. Se non serve indicare una similarità minima ma si vuole solo esplicitare l’ordinamento per distanza, si può usare orderByVectorDistance. Per includere la distanza tra le colonne restituite, selectVectorDistance permette di assegnarle un alias.
pgvector.
Espressioni Raw
INSERT / UPDATE / DELETE
INSERT
UPSERT
UPDATE
DELETE
Query condizionali (when)
Debug
Riepilogo
Metodi più usati
Metodi più usati
Query Builder vs Eloquent
Query Builder vs Eloquent
Il Query Builder è più a basso livello e restituisce
stdClass.
Se non ti servono relazioni ed eventi dei modelli è più semplice e veloce.