J'ai une entité pour travailler avec la base
/** * @Route("/delete/{id}", name="delete_task") * @param Task $id * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function delete(Task $id) { $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($id); $entityManager->flush(); return $this->redirectToRoute('to_do_list'); }
J'ai aussi un contrôleur qui fonctionne avec crud de cet objet. Dans lequel la création, la mise à jour, la lecture sont implémentées, mais la suppression ne fonctionne pas
class Task { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=255) */ private $title; /** * @ORM\Column(type="boolean", nullable=true) */ private $status; public function getId(): ?int { return $this->id; } public function getTitle(): ?string { return $this->title; } public function setTitle(string $title): self { $this->title = $title; return $this; } public function getStatus(): ?bool { return $this->status; } public function setStatus(?bool $status): self { $this->status = $status; return $this; } }
Lors de la suppression d'un objet de la liste, cela produit cette erreur
Comment résoudre ce problème.
3 Réponses :
Il est fort probable que vous SensioFrameworkExtraBundle
installer SensioFrameworkExtraBundle
, puis Symfony transformera automatiquement votre identifiant en entité.
Voici la documentation https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html
J'ai installé doctrine / annotations ":" ^ 1.8
Vérifiez ceci symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/...
Essayez cette méthode, spécifiez exactement ce que vous prévoyez de supprimer
/** * @Route("/delete/{id}", name="delete_task") * @param $id * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function delete($id) { $tasks = $this->getDoctrine()->getRepository(Task::class)->find($id); $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($tasks); $entityManager->flush(); return $this->redirectToRoute('to_do_list'); }
Essayez également cette méthode, spécifiez exactement ce que vous supprimez. J'utilise ceci dans mon projet
if($request->get("id_product_remove")) { $id = intval($request->get("id_product_remove")); $Product= $this->getDoctrine()->getRepository(Product::class)->find($id); $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($Product); $entityManager->flush(); }
Comment appelez-vous cette méthode? Le message semble assez clair, il attend un modèle (de type Task) pendant que vous lui donnez une chaîne en paramètre. Peut-être changer la
Task $id
en juste$id
@kerbholz J'ai ajouté une deuxième capture d'écran qui montre ce qui se passe si vous supprimez Task