Bonjour, j'ai un probleme sur symfony 3 et j'espere trouver de l'aide ici
je vous liste ma situation:
J'ai un heritage entre 5 entité de type Single-Class qui se nomme SubElement.
Cette classe est relié a elle même via une relation ManyToMany, avec les attributs "connections" et "reverseConnections"
J'ai deja créé les method pour addConnections et removeConnections, mais je n'arrive a faire marcher que le addConnections
La method addConnexion:
Le controller pour persister :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public function addConnection(SubElement $element) { $this->connections->add($element); }
Et maintenant mon problème est que je n'arrive pas a supprimer ces connections :
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
22 /** * @Route("/add-connection" , name="add_connection") */ public function addConnectionAction(Request $request) { // getting the entities ids from post request $source = $request->request->get('source', null); $destination = $request->request->get('destination', null); // getting entities from db $sourceSubElement = $this->getDoctrine()->getManager()->getRepository('AppBundle:SubElement')->findOneByUuid($source); $destinationSubElement = $this->getDoctrine()->getManager()->getRepository('AppBundle:SubElement')->findOneByUuid($destination); $sourceSubElement->addConnection($destinationSubElement); $em = $this->getDoctrine()->getManager(); $em->persist($sourceSubElement); $em->persist($destinationSubElement); $em->flush(); return new JsonResponse(); }
La method removeConnections :
Et l'action du controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function removeConnection(SubElement $element) { $this->connections->removeElement($element); } public function removeConnectionReverse(SubElement $element) { $this->connectionsReverse->removeElement($element); }
Mais cela ne marche pas ...
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 /** * @Route("/subelements/{source_uuid}/connections/{destination_uuid}/delete" , name="remove_connection") * @ParamConverter("source", class="AppBundle\Entity\SubElement", options={"mapping": {"source_uuid" = "uuid"}}) * @ParamConverter("destination", class="AppBundle\Entity\SubElement", options={"mapping": {"source_uuid" = "uuid"}}) */ public function removeConnectionAction(Request $request, SubElement $source, SubElement $destination) { $source->removeConnection($destination); $destination->removeConnectionReverse($source); $em = $this->getDoctrine()->getManager(); $em->persist($source); $em->persist($destination); $em->flush(); return new JsonResponse(); }
j'espère que vous arriverez a comprendre...
Merci d'avance
Partager