En esta clase, veremos cómo realizar consultas de selección utilizando Eloquent ORM dentro de Laravel Hugo. Aprenderemos a recuperar datos de la base de datos de manera eficiente para poder visualizar esta información de forma clara. Utilizando la interfaz intuitiva de Laravel Hugo, podemos realizar y probar consultas Eloquent de una manera visual, lo cual nos facilitará enormemente el desarrollo de nuestra aplicación.
¡Empecemos!
Generar consultas con Eloquent ORM
Para poder visualizar eficientemente los datos de nuestra base de datos, emplearemos las instrucciones proporcionadas por Eloquent ORM a través de la herramienta de Laravel Hugo.
A continuación, exploraremos algunos de los métodos más importantes que Eloquent ORM nos ofrece para realizar consultas y obtener información de la base de datos. Para realizar estas pruebas, registraremos más información en nuestra base de datos, lo que nos permitirá observar cómo funcionan estas consultas en un entorno más realista.
Referenciar al Modelo de Eloquent
Para realizar cualquier tipo de consulta a la base de datos con Eloquent, primero necesitamos referenciar al modelo correspondiente.
Para nuestro ejemplo, utilizaremos el modelo “Mascota” para realizar las primeras consultas a la base de datos.
use App\Models\Mascota;
Consultas con Eloquent de Laravel
Los métodos “all” y “get” nos permiten obtener todos los registros de la tabla “mascotas”. Desde Laravel Hugo escribimos el siguiente código de Eloquent.
Mascota::all();
Mascota::get();
Ejecutamos la consulta, y Laravel Hugo obtiene la respuesta de la consulta realizada, mostrando la información en pantalla.
Utilizaremos los métodos “find”, “findOrFail” y “where” para obtener un registro específico de la base de datos.
Ejecutamos la consulta, Laravel Hugo obtiene la respuesta de la consulta realizada.
Utilizaremos los métodos “first” y “last” para obtener el primer y el último registro de la consulta, respectivamente.
Mascota::get()->first();
Mascota::get()->last();
El método “count” para obtener la cantidad de registros.
Mascota::count();
Utilizaremos los métodos “max” y “min” para obtener la mascota con mayor y menor edad, respectivamente.
Mascota::max('edad');
Mascota::min('edad');
Relaciones entre los modelos
Gracias a las relaciones definidas en los modelos, Eloquent nos permite obtener información no solo del modelo en cuestión, sino que también información con todas las relaciones asignadas.
Por ejemplo, podemos obtener la información del refugio en el que actualmente se encuentra la mascota.
use App\Models\Mascota;
$mascota = Mascota::find(6);
$mascota->refugio;
Ejecutamos la consulta y podemos ver toda la información de refugio.
Otro ejemplo, podemos obtener la información de todas las vacunas realizadas a una mascota.
use App\Models\Mascota;
$mascota = Mascota::find(1);
$mascota->vacunas;
Ejecutamos la consulta.
Consulta where en Eloquent
Las cláusulas condicionales “where” se utilizan para seleccionar únicamente ciertos registros de una tabla basándonos en condiciones específicas. Por ejemplo, si queremos obtener las mascotas que sean de tipo perro y gato, utilizaremos esta cláusula para filtrar esos registros.
use App\Models\Mascota;
Mascota::whereIn('tipo', ['Perro', 'Gato'])->get();
Al ejecutar la consulta eloquent podemos verificar que obtiene únicamente información de acuerdo a los filtros detallados.
Además de utilizar la cláusula “where”, podemos añadir a la consulta otras estructuras como “orderBy” y “take”. La primera ordena los resultados obtenidos, mientras que la segunda limita la cantidad de resultados que se mostrarán en la consulta.
use App\Models\Mascota;
Mascota::where('tipo', 'Perro')->orderBy('nombre')->take(5)->get();
En la consulta, podemos aplicar múltiples cláusulas “where” y seleccionar únicamente los campos necesarios para el resultado.
use App\Models\Mascota;
Mascota::where('tipo', 'Perro')->where('edad', '>=', '4')->select('codigo', 'nombre', 'edad', 'raza')->get();
Sentencia With
Eloquent nos permite ejecutar consultas que unen dos o más tablas mediante el uso de la cláusula “with”, gracias a las relaciones definidas en nuestros modelos. Por ejemplo, si deseamos obtener la mascota “Nupi” en que refugio se encuentra.
use App\Models\Mascota;
Mascota::with('refugio')->where('nombre', 'Nupi')->get();
Un similar ejemplo, esta vez para obtener todas las mascotas que se encuentran en el refugio “Refugio Patitas Negras”.
use App\Models\Refugio;
Refugio::with('mascotas')->where('nombre', 'Refugio Patitas Negras')->get();
Otro ejemplo es obtener todas las vacunas aplicadas a la mascota “Nupi”, sabiendo que la relación entre vacunas y mascotas es de muchos a muchos.
use App\Models\Mascota;
Mascota::with('vacunas')->where('nombre', 'Nupi')->get();
Podemos aplicar la cláusula “with” a más de una relación. Por ejemplo, si queremos saber las vacunas que tiene la mascota “Nupi” y cuando fue adoptado.
use App\Models\Mascota;
Mascota::with(['adopcion', 'vacunas'])->where('nombre', 'Nupi')->get();
Podemos aplicar la cláusula “with” a modelos relacionados entre ellos, por ejemplo: El modelo “Mascota” tiene una relación con el modelo “Adopción” y el modelo “Adopción” tiene un relación con el modelo “Persona”, de esta forma podemos acceder a las datos tanto de mascota, adopción y persona.
use App\Models\Mascota;
Mascota::with('adopcion.persona')->get();
Con esto concluimos las consultas a la base de datos utilizando Eloquent ORM en Laravel Hugo. De esta manera, podemos manipular toda la información y verificar si hay inconsistencias en nuestra base de datos para aplicar las correcciones necesarias.
¡Te espero en la próxima clase!
Saludos y éxitos.
Victor Peña
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.