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 :

DELETE depuis OneToMany [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut DELETE depuis OneToMany
    Bonjour à tous !

    Je dispose d'une entité Post qui est en OneToMany avec une entité Values qui est en ManyToOne. Tout fonctionne parfaitement excepté au moment ou je veux effacer un post. Je ne peux apparemment pas effacer depuis un enfant sauf que dans la logique des tables, un post peut contenir plusieurs valeurs et plusieures valeurs peuvent appartenir à plusieurs post !

    Comment puis-je faire ? ça m'étonnerait que symfony n'ait pas prévu le coup !

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    Bonjour,

    si tu souhaites supprimer ton post et toute ses values associé depuis l'objet post, tu dois pour cela supprimer avec la méthode remove() de ton ManyToOne qui se trouve dans ton entity post.

    n'oublie pas la boucle pour toute les valeurs.

    Cordialement

  3. #3
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut ...
    Voici mon action delete qui m'interdit toujours d'effacer les valeurs associées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function delAction($id)
        {
            $em = $this->getDoctrine()->getManager();
            $post = $em->getRepository('AdminBundle:Post')->find($id);
     
            $values = new FieldPostValue();
            $post->removeFieldsPostsValue($values);   
     
            $em->remove($post);
            $em->flush();            
     
        }
    Merci de m'avoir confirmé que c'était possible d'y arriver, l'espoir fait vivre

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    fais un findAll() sur ton entity value et boucle l'object post pour à chaque ligne value post remove chaque ligne

    ou un findBy(array("ton foreign key"))

    ou fait un foreach sur post.NomDeTonChampKey

  5. #5
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut Génial merci !
    T'es un boss !

    Voici le code de mon delAction

    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
    20
    21
     
    public function delAction($id)
        {
            $em = $this->getDoctrine()->getManager();
            $post = $em->getRepository('AdminBundle:Post')->find($id);
     
            if(!$post) 
                throw $this->createNotFoundException('Aucun post trouvé pour cet id : '.$id);   
     
            $values = $em->getRepository('AdminBundle:FieldPostValue')->findBy(array('post' => $id));
            foreach($values as $value)
            {
                $post->removeFieldsPostsValue($value);
                $em->remove($value);
            }
     
            $em->remove($post);
            $em->flush();            
     
            return $this->redirect($this->generateUrl('posts'));
        }

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    Et c'est bon c'est résolu?

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    tu peux aussi faire un foreach direct sur post.attribute vers entity valeur

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

Discussions similaires

  1. [Débutant] Appeler méthode Delete d'un objectDataSource depuis l'évenement Click
    Par Alexandre le Grand dans le forum Entity Framework
    Réponses: 1
    Dernier message: 13/03/2014, 22h33
  2. Réponses: 1
    Dernier message: 24/07/2010, 13h09
  3. Réponses: 2
    Dernier message: 14/02/2008, 14h02
  4. [CR][VB6] Impression d'un état depuis VB
    Par sda dans le forum SDK
    Réponses: 3
    Dernier message: 06/02/2007, 17h27
  5. Réponses: 1
    Dernier message: 22/08/2002, 17h00

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