app/Models/Universidad.php)| Campo | Tipo | Descripción |
|---|---|---|
nombre |
string | Nombre completo de la universidad |
dominio |
string | Dominio de email institucional (ej: ues.edu.sv) — único |
siglas |
string | Abreviatura (ej: UES) |
color_primario |
string | Color hex para branding (ej: #FF0000) |
Relaciones:
$universidad->carreras() // belongsToMany Carrera (pivot: carrera_universidad)
$universidad->alumnos() // hasMany User
La detección automática de universidad funciona por dominio del email durante el social login (Google/Microsoft).
app/Models/Carrera.php)| Campo | Tipo | Descripción |
|---|---|---|
nombre |
string | Nombre de la carrera — único |
Relaciones:
$carrera->universidades() // belongsToMany Universidad
$carrera->users() // hasMany User
Una carrera puede estar vinculada a múltiples universidades mediante la tabla pivote carrera_universidad (usando syncWithoutDetaching para evitar duplicados).
followers)Tabla pivote self-referencing para el sistema de seguimiento:
| Campo | Descripción |
|---|---|
user_id |
Usuario que es seguido |
follower_id |
Usuario que sigue |
Se accede vía relaciones User::followers() y User::following().
app/Models/Like.php)| Campo | Descripción |
|---|---|
user_id |
FK a User |
post_id |
FK a Post |
Un usuario solo puede dar un like por post (toggle en la API).
app/Models/Comentario.php)| Campo | Tipo | Descripción |
|---|---|---|
user_id |
FK | Autor del comentario |
post_id |
FK | Post al que pertenece |
comentario |
text | Texto del comentario (max 500) |
parent_id |
FK nullable | Comentario padre (para anidamiento) |
depth |
integer | Nivel de profundidad (0 = raíz, max 5) |
reply_count |
integer | Contador de respuestas directas |
gif_url |
string nullable | URL de GIF adjunto |