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.

Descripción de Código

  1. Uso de HasFactory: Este trait permite que el modelo use la fábrica de modelos para generar instancias de Capitulo en pruebas y seeding.

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

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

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

  1. Uso de HasFactory: Permite que el modelo use la fábrica de modelos para generar instancias de Comentario_like en pruebas y seeding.

  2. Propiedad $table: Especifica el nombre de la tabla asociada con el modelo. En este caso, la tabla es comentarios_likes.

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

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

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

Descripción de Codigo

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

  2. Propiedad $table: Especifica el nombre de la tabla asociada con el modelo. En este caso, la tabla es cursos_usuarios.

  3. Propiedad $fillable: Define los atributos que pueden ser asignados en masa. Los atributos asignables aquí son diploma, valoracion, progreso, id_usuario, y id_curso.

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

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

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

Descripción de Código

  1. Uso de HasFactory: Permite la utilización de la fábrica de modelos para crear instancias de Examen en pruebas y procesos de seeding.

  2. Propiedad $table: Especifica que el modelo está asociado a la tabla examenes.

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

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

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

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