Récupérer données sur table pivot avec attribut en plus
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 :
Code:
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'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.
J'arrive à récuperer:
les classes d'un professeur pour une année :
Code:
1 2 3 4
| $classes = User::where('id', 1)->first()
->classes()
->wherePivot('annee', 1)
->get(); |
Les utilisateurs d'une classe pour une année (il suffit ensuite de distinguer les élèves des profs)
Code:
$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