Crear los modelos Eloquent Laravel Hugo

Crear los modelos Eloquent en Laravel

En esta clase, aprenderemos cómo crear modelos Eloquent en Laravel para poder manipular nuestras tablas, definir sus relaciones y aprovechar las capacidades avanzadas que Eloquent ofrece para gestionar nuestros datos.

¡Hola! ¡Bienvenidos al curso de Laravel Hugo!

¡Empecemos!

¿Qué es Eloquent ORM?

Eloquent ORM es una de las características más poderosas y populares de Laravel. Proporciona una forma intuitiva y expresiva de interactuar con la base de datos mediante el uso de modelos, que representan tablas en la base de datos y permiten realizar operaciones CRUD (crear, leer, actualizar, eliminar).

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, utilizando el nombre de la tabla en singular. De esta manera, cada fila de la tabla corresponde a un objeto en el código, y cada objeto representa una o más filas de la tabla con propiedades que coinciden con los atributos de la tabla. Esto permite acceder y manipular la información de la base de datos.

Representación Eloquent ORM Laravel

Crear los modelos

Ahora crearemos los modelos de nuestra aplicación para mascotas, así poder manipular las tablas de la base de datos de forma sencilla y organizada.

Crear modelo Refugio

Para poder crear el modelo Refugio desde la Terminal ejecutamos el siguiente comando:

php artisan make:model Refugio

El comando crea un archivo “Refugio.php” en la carpeta “app/Models”. Si abrimos el archivo, veremos que contiene una clase Refugio que se extiende de la clase Model. Esto nos permitirá manipular los registros de la base de datos como objetos.

Dentro de la clase Refugio, comenzaremos a escribir código. Determinamos a qué tabla hace referencia el modelo y definimos los campos que podrán ser accedidos y manipulados desde las vistas de usuario.

protected $table = 'refugios';
protected $fillable = ['nombre', 'ciudad', 'direccion', 'telefono', 'encargado'];

Crear modelo Persona

Para poder crear el modelo Persona desde la Terminal ejecutamos el siguiente comando:

php artisan make:model Persona

Determinamos a qué tabla hace referencia el modelo y definimos los campos que podrán ser accedidos y manipulados desde las vistas de usuario.

protected $table = 'personas';
protected $fillable = ['dni', 'nombre', 'direccion', 'telefono'];

Crear modelo Mascota

Para poder crear el modelo Mascota desde la Terminal ejecutamos el siguiente comando:

php artisan make:model Mascota

Determinamos a qué tabla hace referencia el modelo y definimos los campos que podrán ser accedidos y manipulados desde las vistas de usuario.

protected $table = 'mascotas';
protected $fillable = ['codigo', 'nombre', 'tipo', 'edad', 'raza', 'color', 'pedigri', 'url', 'refugio_id' ];

Crear modelo Vacuna

Para poder crear el modelo Vacuna desde la Terminal ejecutamos el siguiente comando:

php artisan make:model Vacuna

Determinamos a qué tabla hace referencia el modelo y definimos los campos que podrán ser accedidos y manipulados desde las vistas de usuario.

protected $table = 'mascotas';
protected $fillable = ['tipo', 'precio'];

Crear modelo Adopción

Para poder crear el modelo Adopción desde la Terminal ejecutamos el siguiente comando:

php artisan make:model Adopcion

Determinamos a qué tabla hace referencia el modelo y definimos los campos que podrán ser accedidos y manipulados desde las vistas de usuario.

protected $table = 'adopciones';
protected $fillable = ['fecha', 'detalle', 'mascota_id', 'persona_id'];

Relaciones en los Modelos

Las relaciones en Eloquent permiten definir cómo los diferentes modelos en tu aplicación están conectados entre sí. Facilitando la manipulación y el acceso a los datos a través de los modelos.

Relación uno a uno

En una relación uno a uno, identifica que una fila en una tabla está relacionada con una sola fila en otra tabla. En la tabla “Mascotas” con la tabla “Adopciones”, existe una relación uno a uno (Una adopción se realiza a una sola mascota, un mascota puede tener una sola adopción) esta relación uno a uno lo definiremos en nuestros modelos de la siguiente manera:

En el modelo Mascota, escribimos el siguiente código:

public function adopcion(): HasOne
{
    return $this->hasOne(Adopcion::class);
}

En el modelo Adopción, escribimos el siguiente código:

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

Relación uno a muchos

En una relación uno a muchos, identifica que una fila en una tabla puede estar relacionada con múltiples filas en otra tabla. En la tabla “Mascotas” con la tabla “Refugios”, existe una relación uno a muchos (Un refugio tiene muchos mascotas, una mascota está en un solo refugio) esta relación lo definiremos en nuestros modelos de la siguiente manera:

En el modelo Refugio, escribimos el siguiente código:

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

En el modelo Mascota, escribimos el siguiente código:

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

En la tabla “Adopciones” con la tabla “Personas”, existe una relación uno a muchos (Una persona puede realizar muchas adopciones, una adopción lo realiza una sola persona) esta relación lo definiremos en nuestros modelos de la siguiente manera:

En el modelo Persona, escribimos el siguiente código:

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

En el modelo Adopción, escribimos el siguiente código:

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

Relación muchos a muchos

En una relación muchos a muchos, identifica que varias filas en una tabla están relacionadas con varias filas en otra tabla. En la tabla “Mascotas” con la tabla “Vacunas”, existe una relación muchos a muchos (Una mascota puede tener muchas vacunas, una vacuna se aplica a muchas mascotas) esta relación lo definiremos en nuestros modelos de la siguiente manera:

En el modelo Vacuna, escribimos el siguiente código:

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

En el modelo Mascota, escribimos el siguiente código:

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

Con esto, concluimos el análisis y desarrollo de la base de datos de nuestra aplicación. Ahora podemos realizar las pruebas correspondientes con la herramienta Laravel Hugo para manipular toda la información y, en caso de ser necesario, realizar las correcciones pertinentes. Es crucial poder gestionar la base de datos y construir las consultas necesarias que nos permitirán obtener información importante, la cual se reflejará en los controladores y demás funcionalidades de nuestra aplicación.

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

Deja un comentario

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