Models
A continuación se desglosaran ciertas partes del código que nos ayudaran a entender como funcionan ciertos apartados del sitio en el backend, desarrollado con laravel.

Capitulo
Representa la tabla de capítulos en la base de datos y proporciona una interfaz para interactuar con ella.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Capitulo extends Model
{
use HasFactory;
protected $fillable = [
'id_curso',
'titulo',
'descripcion',
];
public function curso()
{
return $this->belongsTo(Curso::class);
}
public function subcapitulos()
{
return $this->hasMany(SubCapitulo::class, 'id_capitulo', 'id');
}
}Descripción de Código
Uso de HasFactory: Este trait permite que el modelo use la fábrica de modelos para generar instancias de Capitulo en pruebas y seeding.
Propiedad $fillable: Define los atributos que se pueden asignar en masa al crear o actualizar un modelo. En este caso, los atributos que se pueden asignar en masa son id_curso, titulo, y descripcion.
Método curso(): Establece una relación de "pertenece a" con el modelo Curso. Esto indica que cada capítulo pertenece a un curso específico. La relación se configura utilizando la clave foránea id_curso en la tabla de capítulos que referencia la clave primaria del curso.
Método subcapitulos(): Define una relación de "tiene muchos" con el modelo SubCapitulo. Esto indica que un capítulo puede tener múltiples subcapítulos. La relación se establece utilizando la clave foránea id_capitulo en la tabla de subcapítulos que referencia la clave primaria del capítulo.
Comentarios
Representa la tabla de "likes" de comentarios en la base de datos y proporciona una interfaz para interactuar con ella.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Usuario;
use App\Models\Comentario;
class Comentario_like extends Model
{
use HasFactory;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'comentarios_likes';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'progreso',
'id_usuario',
'id_comentario',
];
/**
* Get the user that owns the comentario like.
*/
public function usuario()
{
return $this->belongsTo(User::class, 'id_usuario', 'id');
}
/**
* Get the comentario that the like belongs to.
*/
public function comentario()
{
return $this->belongsTo(Comentario::class, 'id_comentario', 'id');
}
}
Uso de HasFactory: Permite que el modelo use la fábrica de modelos para generar instancias de Comentario_like en pruebas y seeding.
Propiedad $table: Especifica el nombre de la tabla asociada con el modelo. En este caso, la tabla es comentarios_likes.
Propiedad $fillable: Define los atributos que se pueden asignar en masa al crear o actualizar un modelo. Aquí, los atributos asignables son progreso, id_usuario, y id_comentario.
Método usuario(): Establece una relación de "pertenece a" con el modelo User (o Usuario en algunos casos). Esto indica que cada "like" en un comentario está asociado a un usuario específico. La relación se configura utilizando la clave foránea id_usuario en la tabla de "likes" que referencia la clave primaria del usuario.
Método comentario(): Define una relación de "pertenece a" con el modelo Comentario. Esto indica que un "like" en un comentario pertenece a un comentario específico. La relación se configura utilizando la clave foránea id_comentario en la tabla de "likes" que referencia la clave primaria del comentario.
Curso_Usuario
Representa una tabla de relación entre cursos y usuarios, gestionando los datos sobre la inscripción de usuarios en cursos.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Usuario;
use App\Models\Curso;
class Curso_usuario extends Model
{
use HasFactory;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'cursos_usuarios';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'diploma',
'valoracion',
'progreso',
'id_usuario',
'id_curso',
];
public static function obtenerInscritos($id_curso) {
return self::where('id_curso', $id_curso)->count();
}
/**
* Get the user that owns the CursoUsuario.
*/
public function usuario()
{
return $this->belongsTo(Usuario::class, 'id_usuario', 'id');
}
/**
* Get the curso that the CursoUsuario belongs to.
*/
public function curso()
{
return $this->belongsTo(Curso::class, 'id_curso', 'id');
}
}Descripción de Codigo
Uso de HasFactory: Permite que el modelo utilice la fábrica de modelos para la creación de instancias en pruebas y procesos de seeding.
Propiedad $table: Especifica el nombre de la tabla asociada con el modelo. En este caso, la tabla es cursos_usuarios.
Propiedad $fillable: Define los atributos que pueden ser asignados en masa. Los atributos asignables aquí son diploma, valoracion, progreso, id_usuario, y id_curso.
Método obtenerInscritos($id_curso): Un método estático que devuelve el número de usuarios inscritos en un curso específico, basado en el id_curso. Utiliza la consulta para contar el número de registros en la tabla cursos_usuarios que tienen el id_curso especificado.
Método usuario(): Establece una relación de "pertenece a" con el modelo Usuario. Esto indica que cada registro en cursos_usuarios está asociado a un usuario específico. La relación se configura mediante la clave foránea id_usuario, que referencia la clave primaria del usuario.
Método curso(): Define una relación de "pertenece a" con el modelo Curso. Esto indica que cada registro en cursos_usuarios está asociado a un curso específico. La relación se configura mediante la clave foránea id_curso, que referencia la clave primaria del curso.
Examen
Representa la tabla exámenes en la base de datos, que almacena la información relacionada con los exámenes.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Examen extends Model
{
use HasFactory;
protected $table = 'examenes';
protected $fillable = [
'nombre', 'descripcion', 'calificacion', 'intentos', 'id_usuario', 'id_curso'
];
public function preguntas()
{
return $this->belongsToMany(Pregunta::class, 'preguntas_a_examenes', 'id_examen', 'id_pregunta');
}
public function usuario()
{
return $this->belongsTo(User::class, 'id_usuario');
}
public function curso()
{
return $this->belongsTo(Curso::class, 'id_curso');
}
}
Descripción de Código
Uso de HasFactory: Permite la utilización de la fábrica de modelos para crear instancias de Examen en pruebas y procesos de seeding.
Propiedad $table: Especifica que el modelo está asociado a la tabla examenes.
Propiedad $fillable: Define los atributos que pueden ser asignados en masa. En este caso, los atributos asignables son nombre, descripcion, calificacion, intentos, id_usuario, y id_curso.
Método preguntas(): Establece una relación de muchos a muchos con el modelo Pregunta. Utiliza una tabla intermedia llamada preguntas_a_examenes para gestionar la relación entre exámenes y preguntas. La relación se define a través de las claves foráneas id_examen y id_pregunta.
Método usuario(): Define una relación de "pertenece a" con el modelo User. Esto indica que cada examen está asociado a un usuario específico, utilizando la clave foránea id_usuario.
Método curso(): Define una relación de "pertenece a" con el modelo Curso. Esto indica que cada examen está asociado a un curso específico, utilizando la clave foránea id_curso.
Last updated