Tu dois utiliser la méthode remove($OBJECT)
Bonjour,
J'utilise Symfony 3.4.7 .
Je travaille avec trois entités,articles, catégories, articles_categories qui fait le lien entre un article et une catégorie.
Pour gérer un article et ses relations articles_catégories, j'utilise la classe CollectionType que j'ajoute dans le formulaire ArticlesType.
Dans mon affichage je gère l'ajout d'une relation et sa suppression.
Voici le code de mon entité articles :
Voici le code de mon entité articlesCatégories :
Voici le code de mon formuaire ArticlesType.php :
Voici l'action que j'appelle quand je veux éditer un article :
L'affichage se fait sur une vue twig. Et j'utilise jquery pour ajouter et enlever du formulaire une relation articlesCategories.
Le problème que je rencontre c'est, lorsque j'ajoute une relation et que je clique sur "Editer", je peux constater que dans ma base de donées il y a bien une relation qui a été créée. Cependant lorsque je supprime une relation et que je clique sur "Editer", je constate que la suppression de mon entité ne s'est pas réalisée dans ma base de données.
Je n'arrive pas à voir où est mon erreur, ou si cette réaction est normale.
J'espère avoir été assez claire, Je vous remercie de votre future aide !
3 réponses
Merci pour ta réponse,
Cette méthode je peux l'utiliser uniquement de le controlleur, non ? Parce que ici le soucis, si dans ma fonction editAction de mon controleur je voudrais l'utiliser, il faudrait que je récupère l'instance de la relation articlesCatégories à supprimer. Alors qu'ici c'est une instance d'un Articles que j'obtiens. Il faudrait que je sache quel élément de ma catégorie a été enlevé dans ma collection. Cependant je ne le sais pas.
Ou alors il faudrait que je puisse utiliser cette fonction dans mon entité Articles à la fonction removeArticlesCategorie, mais je ne sais pas si c'est possible. J'ai essayé d'écrire $this->remove($articlesCategorie) mais ça ne fonctionne pas.
Il y-t-il une solution pour supprimer une entité dans la fonction d'une entité ?
Bonjour à tous,
Toujours en testant pour chercher solution à mon problème, j'ai modifié mon fichier ArticlesType.php.
J'ai enlevé dans celui-ci l'option 'by_reference' qui est rattaché à la collection articlesCategories.
Et donc en testant à nouveau sur mon site. Cette fois-ci quand je supprime une relation ArticlesCategories, elle est bien supprimée en BDD.
Cependant le fait d'avoir enlever 'by_reference' ma généré un autre soucis : Lorsque j'ajoute une nouvelle relation articlesCategories, j'ai cette excpetion : An exception occurred while executing 'INSERT INTO articles_categories (critere_rech_1, critere_rech_2, critere_rech_3, critere_rech_4, code_article_id, code_categorie_id) VALUES (?, ?, ?, ?, ?, ?)' with params [null, null, null, null, null, "A0016"]: SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'code_article_id' ne peut être vide (null)
Donc visblement ma fonction addArticlesCategorie qui se trouve dans Articles.php, n'est plus appelée.
Ne sachant pas d'où ça vient j'ai trouvé une solution parallèle, par contre ça n'est pas propre. J'ai ajouté dans editAction de mon controlleur ce morceau de code :
Pour chaque relations articleCategories de la collection de l'article sélectionné, je modifie le codeArticle de cette relation en lui donnant le code de l'article en cour.
Merci pour l'attention que vous avez apporté à mon post.