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
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.