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 : 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'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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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