Bonjour,
J'ai des professeurs et des eleves, tout deux sont dans la table "users" avec un role_id pour distinguer chacun (1: eleve / 2: prof)
J'ai une relation n:n entre cette table Users et une table Classes, et la table pivot class_user contient un attribut en plus qui est l'année
Un élève etudie dans 0 ou plusieurs classes (en fonction de l'année)
(ex: en 2016 il est en classe C3 / en 2017 C4 / en 2018 non inscrit / en 2019 C3 ...etc)
Un professeur donne cours à 0 ou plusieurs classes (en fonction de l'année)
(ex: Mr Dupont enseigne en 2016 à C1, C2, C3/ en 2017 à C2,C3 / ...etc)
Je me retrouve avec une table pivot du genre :
J'ai créé mes relations belongsToMany, le seul soucis c'est que je n'arrive pas a récuperer les eleves d'un professeur en particulier, pour une année en particulier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 | User | Class | Year | | ------ | ------ | ---- | | Eric | c3 | 2016 | | Eric | c4 | 2017 | | Eric | c3 | 2019 | | Dupont | c1 | 2016 | | Dupont | c2 | 2016 | | Dupont | c3 | 2016 | | Dupont | c2 | 2017 | | Dupont | c3 | 2017 | | ...... | ..... | ... |
J'arrive à récuperer:
les classes d'un professeur pour une année :
Les utilisateurs d'une classe pour une année (il suffit ensuite de distinguer les élèves des profs)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $classes = User::where('id', 1)->first() ->classes() ->wherePivot('annee', 1) ->get();
Code : Sélectionner tout - Visualiser dans une fenêtre à part $users = Classe::find(10)->load('users')->users()->wherePivot('annee', 1)->get();
par contre pour récuperer les eleves d'un professeur pour une année c'est la que ca devient compliqué.
J'ai essayé de faire un foreach sur $classes, puis de récuperer les utilisateurs mais il me renvoie beaucoup trop de resultats
Merci pour votre aide
Partager