Con Eloquent ORM podemos generar consultas para poder manipular nuestra base de datos, utilizaremos la herramienta de Tinker para obtener información de la base de datos de acuerdo a las condiciones realizadas.
Hola, ¿Cómo están? Continuamos con el curso de Laravel.
¡Empecemos!
¿Cómo generar consultas con Eloquent ORM utilizando Tinker?
Para interactuar y manipular eficientemente los datos de nuestra base de datos, emplearemos las instrucciones proporcionadas por Eloquent ORM a través de la herramienta Tinker de Laravel.
En primer lugar, ingresamos al entorno de Tinker desde la Terminal. En el directorio raíz de nuestro proyecto “cursos-online” ejecutamos la siguiente línea de código.
Los métodos “first”, “last” para obtener el primer y el último registro de la consulta respectivamente.
Alumno::get()->first();
Alumno::get()->last();
El método “count” para obtener la cantidad de alumnos inscritos.
Alumno::count();
El método “max” y “min” para obtener el alumno con más edad y con menos edad de la clase respectivamente.
Alumno::max('edad');
Alumno::min('edad');
Consulta where en Eloquent
Las cláusulas condicionales “where” se emplean para seleccionar únicamente ciertos registros de una tabla, basándonos en condiciones específicas que le apliquemos. Por ejemplo, quiero obtener a profesores que tengan la profesión de “Ingeniero de sistemas”.
Profesor::where('profesion', '=', 'Ingeniero de sistemas')->get();
Puedo contar la cantidad de profesores con profesión de “Ingeniero de sistemas”.
Profesor::where('profesion', '=', 'Ingeniero de sistemas')->count();
Quiero obtener a los profesores que tengan de profesión “Ingenieria Comercial” y “Ingenieria de Sistemas”, utilizaremos el método “whereIn”.
Profesor::whereIn('profesion', ['Ingenieria Comercial', 'Ingenieria de Sistemas'])->get();
También se puede obtener a todos los profesores que tengan profesiones diferentes a “Ingenieria de Sistemas”, utilizaremos el método “whereNotIn”.
Profesor::whereNotIn('profesion', ['Ingenieria de Sistemas'])->get();
De igual forma, se puede hacer consultas más complejas esto dependerá del resultado que queremos obtener. Por ejemplo, quiero obtener a todos los profesores que su nombre coincida con la palabra ‘Juan’, además que se ordene ascendentemente por su nombre.
Otro ejemplo, ahora utilizando la tabla alumnos, yo quiero obtener a todos los alumnos menores a 20 años, que se ordene ascendentemente y además solo obtener los campos nombres y edad.
Eloquent nos brinda la capacidad de ejecutar consultas que unen dos o más tablas mediante el uso del método “with”, aprovechando las relaciones definidas en nuestros modelos. Por ejemplo, si deseamos obtener todos los cursos impartidos por el profesor «Juan Daniel Suarez Matos»,
Profesor::with(['cursos'])->where('nombre_apellido', '=', 'Juan Daniel Suarez Matos')->first();
Otra forma de obtener el mismo resultado aprovechando las relación armadas en los modelos es el siguiente. Primero realizamos la consulta para obtener el profesor con nombre igual a «Juan Daniel Suarez Matos».
$profesor = Profesor::where('nombre_apellido', '=', 'Juan Daniel Suarez Matos')->first();
Ahora aprovechamos las relación que tiene con el modelo curso.
$profesor->cursos;
Otro ejemplo, quiere obtener los alumnos que se inscribieron al curso de “Desarrollo Web con Laravel”.
Curso::with(['alumnos'])->where('nombre', '=', 'Desarrollo Web con Laravel')->get();
Con el método “with” también se puede hacer referencia a más de una tabla, por ejemplo, quiero obtener a los alumnos y el profesor quienes están en el curso “Desarrollo Web con Laravel”.
Curso::with(['profesor', 'alumnos'])->where('nombre', '=', 'Desarrollo Web con Laravel')->get();
Ahora que ya tenemos claro lo que es Eloquent ORM y su utilidad para la gestión de bases de datos, así como la obtención eficiente de información relevante según nuestras necesidades, en la próxima clase veremos otra alternativa para extraer datos de la base de datos. Utilizaremos el constructor de consultas proporcionadas por Laravel, ofreciendo así una perspectiva adicional en la manipulación de datos.
Recuerda que puedes descargar el código fuente de esta clase y todas las demás clases en el repositorio de GitHub totalmente gratis.
¡Te espero en la siguiente 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.