Bonjour,

Le titre n'est pas bien explicite mais je ne savais pas trop comment nommer mon problème.

J'ai trois entités principales : TypeA et TypeB reliées en ManyToOne à User.

J'ai deux entités "intermédiaires" : UserTypeA et UserTypeB, qui contiennent les attributs des relations ManyToOne (par exemple, la note qu'un utilisateur a attribué à un produit de type A). Ces deux entités et leur repository sont identiques (sauf que l'une est reliée à TypeA et l'autre à TypeB).

Le problème est que je n'arrive pas à condenser mon code dans mon controller :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public function typea_noterAction(TypeA $typea)
{
   $user = $this->getUser();
   $userTypeA = $this->getDoctrine()
                      ->getManager()
                      ->getRepository('GamUserBundle:UserTypeA')
                      ->getNote($user, $typea);
 
   //Reste du code
}
 
public function typeb_noterAction(TypeB $typeb)
{
   $user = $this->getUser();
   $userTypeB = $this->getDoctrine()
                      ->getManager()
                      ->getRepository('GamUserBundle:UserTypeB')
                      ->getNote($user, $typeb);
 
   //Reste du code
}
Le reste du code est identique (en remplaçant juste TypeA par TypeB). J'ai donc tout un tas de routes et tout un tas de code copier/coller dans mon controller. Y aurait-il un moyen d'éviter ça ? De même pour mes entités intermédiaires et leur repository, c'est juste un gros copier/coller, est-ce possible condenser ça ?