Qué es el query builder
El query builder de Laravel es un mecanismo para construir y ejecutar consultas de base de datos mediante una interfaz fluida. Se parte deDB::table() y se encadenan métodos para armar la consulta.
El query builder funciona con todas las bases de datos soportadas por Laravel (MySQL, MariaDB, PostgreSQL, SQLite, SQL Server). Puedes cambiar de motor sin modificar el código.
Query builder frente a Eloquent
Obtener datos
Todos los registros
get() devuelve una Illuminate\Support\Collection. Cada registro es un stdClass de PHP.
Un solo registro
Lista de valores de una columna
Procesar grandes volúmenes por partes
Streaming (LazyCollection)
Agregados
Comprobar existencia de registros
Cláusula SELECT
Cláusula WHERE
Condiciones básicas
Agrupar condiciones
whereIn / whereBetween / whereNull
whereLike (coincidencia de patrón)
whereAny / whereAll (misma condición en varias columnas)
whereNullSafeEquals (igualdad NULL-safe)
whereNullSafeEquals y orWhereNullSafeEquals comparan una columna con un valor tratando dos NULL como iguales.
Con el operador = normal, NULL = NULL es false; en cambio whereNullSafeEquals considera NULL igual a NULL. Se corresponde con <=> en MySQL y con IS NOT DISTINCT FROM en PostgreSQL.
where('column', null) se convierte en WHERE column IS NULL, pero whereNullSafeEquals('column', $value) se comporta de la misma manera independientemente de que el valor bindeado sea null o no. Es especialmente útil cuando el valor de entrada del usuario puede ser null.JOIN
JOIN con subconsulta
Orden, agrupación y límites
Subconsultas
Búsqueda por similitud vectorial
Para columnas que almacenan vectores de embeddings, puedes usarwhereVectorSimilarTo para buscar únicamente los registros próximos a un vector dado. Las columnas vectoriales se definen como tipo vector en la migración (consulta Columnas e índices vectoriales).
whereVectorSimilarTo ordena los resultados de mayor a menor similitud. Si no necesitas especificar una similitud mínima y solo quieres ordenar por distancia, puedes usar orderByVectorDistance. Cuando quieras incluir la distancia entre las columnas devueltas, selectVectorDistance te permite asignarle un alias.
pgvector.
Expresiones Raw
INSERT / UPDATE / DELETE
INSERT
UPSERT (INSERT o UPDATE)
UPDATE
DELETE
Consultas condicionales (when)
Para aplicar condiciones dinámicamente, when() mantiene el código limpio.
Depuración
Resumen
Métodos habituales
Métodos habituales
Query builder frente a Eloquent
Query builder frente a Eloquent
El query builder es más bajo nivel: devuelve
stdClass en lugar de instancias de modelo.
Cuando no necesitas relaciones ni observers, el query builder es más sencillo y rápido.