Eloquent ORM en Laravel

Eloquent ORM en Laravel

El Eloquent ORM en Laravel permite a los desarrolladores interactuar con la base de datos utilizando modelos de objetos en lugar de escribir consultas SQL. Por ejemplo, cuando realizamos un CRUD realizamos consultas directamente a la base de datos utilizando objetos en lugar de consultas SQL.  

¡Hola! ¡Bienvenidos al curso de Laravel nivel intermedio!

¡Empecemos!

¿Qué es Eloquent ORM?

Eloquent ORM (Mapeo Objeto–Relacional) proporciona una implementación simple y sencilla para trabajar con la base de datos de nuestra aplicación; tiene la funcionalidad de poder seleccionar, crear, modificar y eliminar registros de nuestra base de datos utilizando objetos y métodos en lugar de escribir consultas SQL directamente.

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

Cómo funciona Eloquent ORM en los modelos

Para comprender visualmente cómo trabaja Eloquent, se crea una clase modelo para cada tabla de la base de datos, con el mismo nombre que la tabla en singular. De esta manera, cada fila de la tabla corresponde con un objeto en el código. Cada objeto representa una o más filas de la tabla y tiene propiedades que coinciden con los atributos de la tabla. Esto permite acceder y manipular los datos de la base de datos.

Representación Eloquent ORM Laravel

Los Modelos (Models) en Laravel

Los Modelos son uno de los componentes más importantes de Laravel, son los responsables de interactuar con nuestra base de datos de una manera orientada a objetos. Los modelos representan las tablas de la base de datos como clases en tu aplicación, permiten realizar operaciones para seleccionar, crear, actualizar y eliminar datos de una manera más sencilla y estructurada.

Al crear el Modelo este debe de ser en singular que correspondería a su plural a una tabla de la base de datos (ejemplo: Alumnos = Alumno).

Crear el modelo Alumno

Ahora crearemos el Modelo que administre la tabla “Alumnos”. Desde la consola de Artisan escribimos la siguiente línea de código:

php artisan make:model Alumno

El comando crea una archivo  “Alumno.php” en la carpeta app/Models, si abrimos el archivo veremos que tiene una clase “Alumno” que se extiende de la clase “Models”, esto nos permitirá manipular los registros de la base de datos como objetos.

Dentro de la clase “Alumno” iremos escribiendo código. Lo primero que haremos será determinar la relación del modelo con su correspondiente tabla en la base de datos.

protected $table = "alumnos";

También, vamos a definir la llave primaria de la tabla, los campos que estarán visibles y que campos protegidos contra escritura.

protected $primaryKey = "id";
protected $fillable = ['nombre_apellido', 'edad', 'telefono', 'direccion'];
protected $guarded = ['id'];

Crear el modelo Profesor

Realizamos los mismos pasos para crear el Modelo de la tabla “Profesores”. En la consola de Artisan escribimos la siguiente línea de código:

php artisan make:model Profesor

Dentro de la clase “Profesor” iremos registrando las propiedades con su relación con la tabla Profesores.

protected $table = "profesores";
protected $primaryKey = "id";
protected $fillable = ['nombre_apellido', 'profesion', 'grado_academico', 'telefono'];
protected $guarded = ['id'];

Crear el modelo Curso

Por último, creamos el Modelo de la tabla “Cursos”. Desde la consola de Artisan escribimos la siguiente línea de código:

php artisan make:model Curso

Registramos las propiedades en el Modelo “Curso”.

protected $table = "cursos";
protected $primaryKey = "id";
protected $fillable = ['materia', 'nivel', 'horas_academicas', 'profesor_id'];
protected $guarded = ['id'];

Con esto ya tenemos listos los modelos de nuestra aplicación, Ahora procederemos a establecer las relaciones entre las tablas a través de los modelos.

Relaciones en Eloquent ORM en Laravel

Las relaciones a nivel de la estructura de la base de datos ya las vimos en la anterior clase Migraciones en Laravel 11. Ahora, examinaremos estas relaciones desde los modelos. Eloquent de Laravel simplifica la gestión de relaciones con métodos específicos para cada tipo (uno a uno, uno a muchos, muchos a muchos); en nuestro modelo entidad relación encontramos algunas de estas relaciones.

Relación uno a muchos

En la tabla “Profesores” con la tabla “Cursos”, existe una relación uno a muchos (Un profesor puede dictar muchos cursos, un curso puede ser dictado por un solo profesor) esta relación uno a muchos lo definiremos en nuestros modelos de la siguiente manera:

En el modelo “Profesor” utilizaremos el método hasMany que define la relación uno a muchos. Realizamos la referencia a la propiedad hasMany.

use Illuminate\Database\Eloquent\Relations\HasMany;

Creamos el método que define la relación.

public function cursos(): HasMany {
    return $this->hasMany(Curso::class);
}

Para definir la inversa de una relación utilizaremos en el modelo Curso el método belongsTo que define la relación muchos a uno.

use Illuminate\Database\Eloquent\Relations\BelongsTo;

Creamos el método que define la relación.

public function profesor(): BelongsTo {
    return $this->belongsTo(Profesor::class);
}

Relación muchos a muchos

De igual forma, veremos la relación de la tabla Alumnos y Cursos; existe una relación muchos a muchos (Un alumno puede tomar varios cursos, un curso puede tener varios alumnos), la relación muchos a muchos lo plasmamos en los modelos.

En el modelo “Alumno” utilizaremos el método belongsToMany que define la relación, muchos a muchos.

use Illuminate\Database\Eloquent\Relations\BelongsToMany;

Creamos el método que define la relación.

public function cursos(): BelongsToMany {
    return $this->belongsToMany(Curso::class);
}

Del mismo modo en el modelo “Curso” utilizamos el mismo método belongsToMany que define la relación muchos a muchos.

use Illuminate\Database\Eloquent\Relations\BelongsToMany;

Creamos el método que define la relación.

public function alumnos(): BelongsToMany {
    return $this->belongsToMany(Alumno::class);
}

Eloquent ORM desempeñan un papel esencial con la interacción con la base de datos y permiten una forma elegante y sencilla de trabajar con los datos de la aplicación de una manera orientada a objetos. Podemos utilizar los métodos proporcionados por Eloquent en nuestros Modelos para listar, crear, modificar y eliminar sin ningún problema, pero generalmente se utilizan desde los Controladores o Repositorios.

En la próxima clase, exploraremos el uso de estos métodos que nos proporciona Eloquent para manipular los datos de nuestra base, utilizando la herramienta Tinker.

¡Te espero en la próxima clase!

Saludos y éxitos.

Victor Peña

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.

2 comentarios en “Eloquent ORM en Laravel”

  1. Pingback: Migraciones en Laravel - Norvic Software

  2. Pingback: Tinker en Laravel - Norvic Software

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *