Curso de Laravel Gohu
Ejecutar consultas Eloquent ORM con Laravel Gohu
Por Víctor Peña · Actualizado el
En esta oportunidad aprenderemos a ejecutar consultas de Eloquent ORM con Laravel Gohu para obtener información desde nuestra base de datos. Con Laravel Gohu podremos escribir nuestras consultas y visualizar el resultado en formato JSON al instante, directamente desde Visual Studio Code, sin necesidad de recurrir a la terminal ni de ir al frontend para ver la información.
¡Hola! ¡Bienvenidos al curso de Laravel Gohu!
¡Empecemos!
Información. Laravel Gohu es una extensión de Visual Studio Code que se instala desde el propio editor y te permite ejecutar consultas de Eloquent ORM y Query Builder en tu proyecto Laravel. Si aún no la tienes, revisa la primera lección.
Preparar el entorno de Laravel Gohu
Antes de ejecutar cualquier consulta, abre el panel de Laravel Gohu desde la paleta de comandos de VS Code (Ctrl + Shift + P / Cmd + Shift + P) escribiendo «Laravel Gohu». Luego haz clic en el ícono de carpeta y selecciona el proyecto Mascotas.
Verifica que el indicador de estado esté en verde: eso confirma que PHP, Laravel y la base de datos están respondiendo.
Ejecutar consultas
Escribiremos el código en el área de la izquierda y, al pulsar ▶ Run, veremos el resultado en el área de la derecha en formato JSON, junto con el total de registros y el tiempo de ejecución de la consulta.
use App\Models\Mascota;
Mascota::get();
Obtener todos los registros
Comenzaremos por la consulta más común: obtener todos los registros de una tabla. Para ello utilizamos el método all() sobre el modelo.
use App\Models\Mascota;
Mascota::all();
Ejecutamos el código y en el área de resultados obtendremos un JSON con el total de mascotas y sus datos. Ten en cuenta que Laravel Gohu muestra las primeras 20 filas en el campo data, mientras que el campo total refleja el conteo completo.
También podemos utilizar el método get(), que es el más habitual cuando encadenamos condiciones:
use App\Models\Mascota;
Mascota::get();
Buscar un registro específico
Cuando necesitamos un único registro usamos find(), pasando el identificador. Por ejemplo, para obtener la mascota con id igual a 1:
use App\Models\Mascota;
Mascota::find(1);
Si queremos obtener el primer registro que cumpla una condición, utilizamos first():
use App\Models\Mascota;
Mascota::where('tipo', 'Perro')->first();
Filtrar y ordenar registros
Eloquent nos permite construir consultas más precisas encadenando condiciones. Filtremos todas las mascotas de tipo «Perro»:
use App\Models\Mascota;
Mascota::where('tipo', 'Perro')->get();
Podemos combinar varias condiciones, ordenar los resultados y limitar la cantidad. Obtengamos las 5 mascotas más jóvenes:
use App\Models\Mascota;
Mascota::where('tipo', 'Perro')->orderBy('edad', 'asc')->limit(5)->get();
Seleccionar columnas y contar registros
Si solo necesitamos algunas columnas, las indicamos con select():
use App\Models\Mascota;
Mascota::select('nombre', 'raza', 'edad')->get();
Para obtener únicamente los valores de una columna usamos pluck():
use App\Models\Mascota;
Mascota::pluck('nombre');
Y para contar los registros que cumplen una condición, count():
use App\Models\Mascota;
Mascota::where('tipo', 'Perro')->count();
Consultar relaciones
Una de las mayores ventajas de Eloquent es el manejo de relaciones. Para cargar una mascota junto con su refugio utilizamos la carga ansiosa (eager loading) con with():
use App\Models\Mascota;
Mascota::with('refugio')->get();
De igual forma, podemos consultar un refugio con todas sus mascotas:
use App\Models\Refugio;
Refugio::with('mascotas')->find(1);
Y si trabajamos con una relación muchos a muchos, podemos traer las mascotas con sus vacunas:
use App\Models\Mascota;
Mascota::with('vacunas')->get();
Carga anidada de relaciones
Podemos cargar relaciones dentro de otras relaciones usando la notación de punto. Traigamos cada refugio con sus mascotas y, a su vez, las vacunas de cada mascota:
use App\Models\Refugio;
Refugio::with('mascotas.vacunas')->get();
Filtrar la carga ansiosa
También podemos aplicar condiciones a la relación que estamos cargando. Por ejemplo, traer los refugios cargando solo las mascotas de tipo «Perro», ordenadas por edad:
use App\Models\Refugio;
Refugio::with(['mascotas' => function ($query) {
$query->where('tipo', 'Perro')->orderBy('edad', 'asc');
}])->get();
Filtrar por la existencia de una relación
Con whereHas() podemos filtrar los registros principales según una condición sobre su relación. Obtengamos únicamente los refugios que tienen al menos una mascota de tipo «Perro»:
use App\Models\Refugio;
Refugio::whereHas('mascotas', function ($query) {
$query->where('tipo', 'Perro');
})->get();
Contar registros relacionados
El método withCount() agrega el número de registros de una relación sin necesidad de cargarlos. Traigamos los refugios junto con la cantidad total de mascotas que alberga cada uno:
use App\Models\Refugio;
Refugio::withCount('mascotas')->get();
En el resultado, cada refugio incluirá un nuevo campo mascotas_count.
Una consulta completa
Podemos realizar consultas más complejas que involucran más tablas. Obtendremos los refugios que tienen al menos un perro, incluyendo el conteo total de sus mascotas y cargando solo sus perros —ordenados por edad— junto con las vacunas de cada uno:
use App\Models\Refugio;
Refugio::withCount('mascotas')
->whereHas('mascotas', function ($query) {
$query->where('tipo', 'Perro');
})
->with(['mascotas' => function ($query) {
$query->where('tipo', 'Perro')
->with('vacunas')
->orderBy('edad', 'asc');
}])->get();
Ejecutamos el código en Laravel Gohu y en el área de resultados veremos un JSON anidado con cada refugio, su mascotas_count, sus perros y las vacunas correspondientes. Este tipo de consulta refleja escenarios reales, donde necesitamos combinar filtros, conteos y carga de relaciones en una misma operación.
Para cerrar
Ejecutar consultas de Eloquent ORM con Laravel Gohu nos permite explorar y validar el código creado por nosotros o por una IA de una manera visual y sencilla. Estas consultas de lectura son la base para mostrar datos en cualquier parte de tu aplicación.
En la siguiente lección veremos el Query Builder de Laravel.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp