0
votes

La mise en œuvre de la suppression de la base de données ne fonctionne pas, je ne comprends pas pourquoi

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

entrez la description de l'image ici

Comment résoudre ce problème.

ajouter entrez la description de l'image ici


2 commentaires

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


3 Réponses :


0
votes

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


2 commentaires

J'ai installé doctrine / annotations ":" ^ 1.8


Vérifiez ceci symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/...



2
votes

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');
    }


0 commentaires

1
votes

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();
   }


0 commentaires