[Symfony 3] removeElement() many to many
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:
1 2 3 4 5
|
public function addConnection(SubElement $element)
{
$this->connections->add($element);
} |
Le controller pour persister :
Code:
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:
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:
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