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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
public function addConnection(SubElement $element)
{
   $this->connections->add($element);
}
Le controller pour persister :

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();
}
Et maintenant mon problème est que je n'arrive pas a supprimer ces connections :

La method removeConnections :

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);
}
Et l'action du 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
 
/**
 * @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();
 
}
Mais cela ne marche pas ...

j'espère que vous arriverez a comprendre...

Merci d'avance