Query Builder

Intermedio
Laravel
Laravel
Actualizado: 24/09/2025

Introducción a Query Builder

Laravel Query Builder es una interfaz fluida y expresiva que permite construir y ejecutar consultas SQL de manera elegante sin escribir SQL crudo. Representa una alternativa complementaria a Eloquent ORM que ya hemos estudiado, pero con un enfoque diferente y casos de uso específicos.

¿Qué es Query Builder?

El Query Builder de Laravel proporciona una abstracción sobre las consultas SQL tradicionales, permitiendo construir consultas complejas utilizando métodos PHP encadenados. Esta herramienta trabaja directamente con las tablas de la base de datos sin necesidad de modelos Eloquent, ofreciendo mayor control y rendimiento en determinadas situaciones.

use Illuminate\Support\Facades\DB;

// Consulta básica con Query Builder
$users = DB::table('users')
    ->where('active', true)
    ->orderBy('name')
    ->get();

Diferencias clave con Eloquent ORM

Mientras que Eloquent ORM trabaja con modelos que representan entidades de negocio y proporciona funcionalidades avanzadas como relaciones, eventos y mutadores, Query Builder se centra exclusivamente en la construcción de consultas SQL eficientes:

Eloquent ORM (ya estudiado):

// Trabajo con modelos y relaciones
$user = User::with('posts')->find(1);
$user->posts()->create(['title' => 'Nuevo post']);

Query Builder:

// Trabajo directo con tablas
$user = DB::table('users')->find(1);
DB::table('posts')->insert([
    'user_id' => 1,
    'title' => 'Nuevo post'
]);

Cuándo usar Query Builder

El Query Builder es especialmente útil en los siguientes escenarios:

  • Consultas complejas de reporting: Cuando necesitas generar informes con múltiples joins, agregaciones y subconsultas.

  • Optimización de rendimiento: Para consultas que requieren máximo rendimiento y no necesitan la sobrecarga de Eloquent.

  • Manipulación masiva de datos: Operaciones bulk como actualizaciones o eliminaciones de grandes volúmenes de registros.

  • Consultas dinámicas: Cuando la estructura de la consulta se construye condicionalmente según parámetros de entrada.

Ventajas del Query Builder

El Query Builder ofrece múltiples beneficios que lo hacen indispensable en el desarrollo con Laravel:

  • Sintaxis fluida: Permite encadenar métodos de forma natural y legible.

  • Protección contra inyección SQL: Utiliza PDO parameter binding automáticamente para sanitizar los datos.

  • Compatibilidad multiplataforma: Funciona consistentemente con MySQL, PostgreSQL, SQLite y SQL Server.

  • Rendimiento optimizado: Menor sobrecarga comparado con Eloquent para operaciones simples.

Anatomía básica de una consulta

Una consulta típica con Query Builder sigue este patrón estructural:

$result = DB::table('tabla_origen')
    ->select('columna1', 'columna2')     // Selección de campos
    ->where('condicion', '=', 'valor')   // Filtros
    ->orderBy('columna1', 'desc')        // Ordenamiento
    ->limit(10)                          // Limitación
    ->get();                             // Ejecución

Iniciando una consulta

Todas las consultas Query Builder comienzan utilizando el método table() de la facade DB, especificando la tabla sobre la que trabajaremos:

use Illuminate\Support\Facades\DB;

// Inicio básico de consulta
$query = DB::table('products');

// Consulta completa
$products = DB::table('products')
    ->where('price', '>', 100)
    ->get();

Tipos de resultados

El Query Builder puede retornar diferentes tipos de resultados según el método de finalización utilizado:

// Colección de registros
$users = DB::table('users')->get();

// Registro único
$user = DB::table('users')->first();

// Valor específico
$email = DB::table('users')
    ->where('id', 1)
    ->value('email');

// Conteo de registros
$count = DB::table('users')->count();

Integración con el ecosistema Laravel

El Query Builder se integra perfectamente con otros componentes de Laravel:

// En un controlador
class ReportController extends Controller
{
    public function salesReport()
    {
        $sales = DB::table('orders')
            ->join('users', 'orders.user_id', '=', 'users.id')
            ->select('users.name', DB::raw('SUM(orders.amount) as total'))
            ->where('orders.status', 'completed')
            ->groupBy('users.id')
            ->having('total', '>', 1000)
            ->get();
        
        return view('reports.sales', compact('sales'));
    }
}

El Query Builder establece los fundamentos para construir consultas SQL complejas de manera elegante y segura. En las siguientes secciones profundizaremos en las diferentes capacidades que ofrece esta herramienta, desde consultas básicas hasta operaciones avanzadas de manipulación de datos.

Fuentes y referencias

Documentación oficial y recursos externos para profundizar en Laravel

Documentación oficial de Laravel
Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Laravel es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Laravel

Explora más contenido relacionado con Laravel y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

  • Comprender qué es y cómo funciona el Query Builder en Laravel.
  • Diferenciar entre Query Builder y Eloquent ORM y sus casos de uso.
  • Aprender a construir consultas básicas y complejas usando métodos encadenados.
  • Identificar cuándo es recomendable usar Query Builder para optimizar rendimiento.
  • Conocer la integración del Query Builder con otros componentes de Laravel.