Laravel - Relación de 4 tablas con una Pivot

 
Vista:

Relación de 4 tablas con una Pivot

Publicado por escarabajo (1 intervención) el 29/07/2020 00:13:15
Hola, gracias de antemano por su ayuda

Tengo una consulta, necesito relacionar 4 tablas con una tabla pivot, y tengo problemas al momento de relacionarlas y consumir la información 

Es un sistema para un Colegio

Tengo mi Tabla Users, que puede tener mucho Levels (Inicial, Primaria, Secundaria)
Tengo mi Tabla Levels que puede tener muchos Degrees(1ero, 2do, 3ero, ….)
Tengo Mi tabla Degree que puede tener muchos Courses (Matemática, Comunicación, Personal, ….)

Entiendo que todo es muchos a muchos, ya que asi como un User puede tener muchos levels, un levels puede tener muchos users, por que un docente puede enseñar en inicial y primaria, y en inicial pueden haber muchos docentes, pasa lo mismo con las demas tablas

he creado una tabla pivot, en la que guardo solo IDS
users_id — levels_id — degrees_id — courses_id

como puedo consumir esta tabla
Gracias de antemano 

Necesito que en mi vista blade
pueda ver
El nombre de la Miss
debajo dos grupo por Levels
grupos por grado y dentro filas de cursos

Espero alguien me pueda ayudar

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Frank
Val: 9
Ha aumentado 1 puesto en Laravel (en relación al último mes)
Gráfica de Laravel

Relación de 4 tablas con una Pivot

Publicado por Frank (3 intervenciones) el 06/08/2020 06:35:22
No conozco en detalles el proyecto, pero me arriesgare, aunque me pueda equivocar, a darte una sugerencia de como yo enfocaría el asunto:
Inicialmente partiría de los campos que se desean mostrar en el reporte, estos son:
• Nombre del usuario que imparte los cursos (user_name)
• Niveles a los que el usuario imparte cursos (level)
• Grados en los niveles a los cuales le imparte cursos (degree)
• Cursos de los grados en los niveles que el usuario imparte (course)
Si observamos la palabra “curso” sale a relucir en cada una de los elementos que se quieren mostrar en el reporte; por tanto, podemos seleccionar a “course” como llave, como suposición inicial.
Estos serían los atributos de mi relación:
• course
• level
• degree
• user_name
Por tanto, la relación estaría representada por los siguientes campos o atributos (se han agregado los respectivos ids):
R (course_id, course_name, level_id, level_name, degree, user_id, user_name)
Cada curso se imparte en un nivel (level) y dentro de ese nivel en un solo grado (degree)
Procedamos a Normalizar
Aplicando Primera Forma Normal (1FN) a R (recordar que seleccionamos a “course” como supuesta llave candidata)
R/ Course (course_id, course_name, level_id, level_name, degree)
Docencia (course_id, user_id, user_name )
De esta forma eliminamos los campos repetitivos y ya nuestras relaciones están en 1FN.
Aplicando Segunda Forma Normal (2FN) a Docencia
R/ User (user_id, user_name)
Docencia (course_id, user_id)
Aplicando Tercera Forma Normal (3FN) a Course
R/ Level (level_id, level_name)
Course (course_id, course_name, level_id, degree)
Quedándonos las siguientes entidades:
R/ Course (course_id, course_name, level_id, degree)
Level (level_id, level_name)
Docencia (course_id, user_id)
User (user_id, user_name)
Entonces “Docencia” seria tu tabla pivot
Ya llegado a este punto y con un modelo relacional más normalizado, implementar estos modelos en Laravel y crear un método dentro del modelo “Docencia” que te devuelva una colección de con todos los datos necesarios haciendo uso del ORM de Laravel me parece que será más sencillo.
Por favor, sino entendí bien la duda o piensas que estoy equivocado házmelo saber, Saludos
PD:Si deseas ver la implentación en Laravel comentamelo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar