IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Eviter la suppression en cascade sur une relation OneToOne


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Par défaut Eviter la suppression en cascade sur une relation OneToOne
    Bonjour,

    Je rencontre un problème sur un mini projet, un blog d'article. Le soucis se situe au niveau de deux entités, Article et Picture avec une relation OneToOne entre chaque. Un article ne peut avoir qu'une seule image et une image appartient à un seul article.
    La FK est dans l'entité Article (image_id) et fait référence à l'ID de l'image dans l'entité Picture. Jusque là rien de bien méchant.

    Sauf que lorsque je veux supprimer simplement une image, et donc faire disparaitre la FK et la rendre null. J'ai une erreur Symfony qui me dit qu'il est impossible de supprimer la ligne parent à savoir tout l''article. Le fichier d'upload est bien supprimé de mon dossier mais pas de la BDD. C'est comme si j'étais obligé de faire un cascade remove, ce qui supprime bien le fichier mais également TOUT l'article associé.

    Nom : Capture.PNG
Affichages : 513
Taille : 21,4 Ko

    Donc pour résumer : Comment faire en sorte de supprimer simplement l'image associée à un article et non pas en cascade tout l'article également ?

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Par défaut
    Pour information j'ai essayé simplement de rajouter une entrée picture à l'entité Article mais lorsque je voulais supprimer l'image en question ca ne fonctionnait pas. Ca me disait que je ne pouvais supprimer qu'un objet, non un string. C'est pour ca que j'ai crée une entité Picture en le reliant à un Article.

    Voici la méthode de suppression d'une image sur mon 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("/image/{id}", name="delete_image")
         */
        public function deleteImage(Picture $picture): Response
        {      
           // On récupère le nom de l'image
           $nom = $picture->getName();
     
           // On supprime le fichier
           unlink($this->getParameter('images_directory').'/'.$nom);
     
           // On supprime l'entrée de la base
           $em = $this->getDoctrine()->getManager();
           $em->remove($picture);
           $em->flush();
     
           return $this->redirectToRoute('admin_home');
     
        }
    Egalement l'entité Picture et sa relation avec Article :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**
         * @ORM\OneToOne(targetEntity=Article::class, mappedBy="image", cascade={"persist"})
         */
        private $article;
    L'entité Article et sa relation avec Picture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /**
         * @ORM\OneToOne(targetEntity=Picture::class, inversedBy="article", cascade={"persist", "remove"})
         * @ORM\JoinColumn(nullable=true)
         */
        private $image;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/06/2007, 08h30
  2. [CONCEPTION] probleme sur une relation reflexive
    Par bambi98 dans le forum Modélisation
    Réponses: 5
    Dernier message: 27/04/2007, 11h34
  3. souci sur une relation
    Par Eh_manu dans le forum Access
    Réponses: 22
    Dernier message: 05/06/2006, 10h06
  4. Question sur une relation ternaire dans un MCD
    Par sylsau dans le forum Schéma
    Réponses: 5
    Dernier message: 05/03/2006, 20h00
  5. Réponses: 3
    Dernier message: 01/12/2005, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo