Modelos Eloquent
El proyecto cuenta con 8 modelos Eloquent que definen la estructura de datos del sistema.
1. User
Ubicación:
app/Models/User.php
Modelo principal que representa a los usuarios del sistema.
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
name |
string | Nombre completo del usuario |
email |
string | Correo electrónico (único) |
password |
string | Contraseña hasheada |
role_id |
int | FK al rol del usuario |
email_verified_at |
datetime | Fecha de verificación del email |
remember_token |
string | Token para recordar sesión |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
class User extends Authenticatable
{
// Relación con el rol
public function role(): BelongsTo
{
return $this->belongsTo(Role::class);
}
// Relación con presentaciones
public function presentations(): HasMany
{
return $this->hasMany(Presentation::class);
}
// Relación con pósters
public function posters(): HasMany
{
return $this->hasMany(Poster::class);
}
}
Métodos
Retorna las iniciales del nombre (máximo 2 caracteres).
public function getInitialsAttribute(): string
{
$words = explode(' ', $this->name);
$initials = '';
foreach ($words as $word) {
$initials .= strtoupper($word[0]);
if (strlen($initials) >= 2) break;
}
return $initials;
}
2. Role
Ubicación:
app/Models/Role.php
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
name |
string | Nombre del rol (asistente, ponente, admin) |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
public function users(): HasMany
{
return $this->hasMany(User::class);
}
3. Poster
Ubicación:
app/Models/Poster.php
Modelo para gestionar los pósters del congreso.
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
title |
string | Título del póster |
summary |
string | Resumen o abstract |
url_file |
string | Ruta al archivo PDF |
type_presentation_id |
int | FK al tipo de presentación |
user_id |
int | FK al autor |
category_id |
int | FK a la categoría |
published |
bool | Estado de publicación |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
public function type_presentation(): BelongsTo
{
return $this->belongsTo(TypePresentation::class);
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function category(): BelongsTo
{
return $this->belongsTo(Category::class);
}
4. Presentation
Ubicación:
app/Models/Presentation.php
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
title |
string | Título de la presentación |
summary |
string | Resumen o abstract |
url_file |
string | Ruta al archivo |
type_file |
string | Tipo de archivo (PDF, POWERPOINT, etc.) |
type_presentation_id |
int | FK al tipo de presentación |
user_id |
int | FK al autor |
category_id |
int | FK a la categoría |
published |
bool | Estado de publicación |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
public function type_presentation(): BelongsTo
{
return $this->belongsTo(TypePresentation::class);
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function category(): BelongsTo
{
return $this->belongsTo(Category::class);
}
5. Sponsor
Ubicación:
app/Models/Sponsor.php
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
name |
string | Nombre del patrocinador |
email |
string | Correo electrónico |
phone |
string | Teléfono de contacto |
amount_contributed |
float | Monto contribuido |
type_sponsor_id |
int | FK al tipo de patrocinador |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
public function type_sponsor(): BelongsTo
{
return $this->belongsTo(TypeSponsor::class);
}
6. Category
Ubicación:
app/Models/Category.php
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
name |
string | Nombre de la categoría |
description |
text | Descripción |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
public function presentations(): HasMany
{
return $this->hasMany(Presentation::class);
}
public function posters(): HasMany
{
return $this->hasMany(Poster::class);
}
7. TypeSponsor
Ubicación:
app/Models/TypeSponsor.php
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
name |
string | Nombre del tipo (oro, plata, bronce, colaborador, institucional) |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
public function sponsors(): HasMany
{
return $this->hasMany(Sponsor::class);
}
8. TypePresentation
Ubicación:
app/Models/TypePresentation.php
Atributos
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int | Identificador único |
name |
string | Nombre del tipo |
description |
text | Descripción |
created_at |
datetime | Fecha de creación |
updated_at |
datetime | Fecha de actualización |
Relaciones
public function presentations(): HasMany
{
return $this->hasMany(Presentation::class);
}
public function posters(): HasMany
{
return $this->hasMany(Poster::class);
}