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 :

Comment afficher une erreur après un remove ->flush ? [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut Comment afficher une erreur après un remove ->flush ?
    Bonjour, je souhaite supprimer une donnée qui est lié une relation oneToMany.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            $em = $this->getDoctrine()->getEntityManager();
            $contact = new Contact();
            $contact = $em->getRepository('KodAnnuaireBundle:Contact')->find($idcontact);
            $em->remove($contact);
            $em->flush();
    ici je ne peux pas supprimer "$contact" car il y a un relation oneToMany
    un contact a plusieurs rendes-vous,
    Dans cette situation, $contact contient encore un rendez-vous, donc j'aurais un erreur
    de clé etrangère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`logykod`.`Rdv`, CONSTRAINT `FK_288E5966E7A1254A` FOREIGN KEY (`contact_id`) REFERENCES `Contact` (`id`))
    ma première question :

    Avant d'afficher cette erreur, comment je peux faire pour afficher une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Le contact possède encore un ou des rendez-vous, merci de les supprimer avant
    de supprimer celui-ci
    2ème question

    Comment faut t'il faire pour compter le nombre de rendez-vous qu'il lui reste à ce contact ?

    Voici comment est liée mon contact (RDVs et l'ensemble des rendez-vous)
    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
     
    class Contact {
     
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * 
         * @ORM\OneToMany(targetEntity="Kod\AgendaBundle\Entity\Rdv",mappedBy="contact")
         */
        private $Rdvs;
    Je vous remercie d'avance pour la réponse

  2. #2
    Membre éprouvé Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Par défaut
    Tu peux recuperer tes rdvs en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rdvs = $contact->getRdvs()
    A partir de la tu te retrouves avec un array de Rdvs, tu n'a plus qu'a regarde le nombre d’occurrences avec la fonction count() par exemple pour voir si il reste des rdvs ou non et effectuer le contenu approprié.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    Merci Avrel,

    par contre je pensais que le contact avais encore un rendez-vous, mais en fait il n'y en pas, mais je ne peux toujours pas supprimer ce contact.

    j'ai essayer ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $rdv =$contact->getRdvs();
    echo count($rdv->getId());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Call to a member function getRdvs() on a non-object in Kod/AnnuaireBundle/Controller/ContactController.php on line 46

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 73
    Par défaut
    Déjà pour afficher ton message d'erreur tu fais comme tu veux, mais ce que tu demande c'est comment ne pas afficher le message d'erreur de sql. Simple tu fais un try catch

    Ensuite si tu regarde la fonction remove de doctrine, tu remarquera qu'il retourne un objet, c'est cet objet que tu doit supprimer avec flush.

    Ensuite pour que tu puisse récupérer tes rdvs tu dois implémenter une méthode get ( getRdvs() )

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    Merci de ta réponse.
    j'ai pus trouver la soluce

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

Discussions similaires

  1. Afficher une DIV après chargement du document ?
    Par tjoce05 dans le forum jQuery
    Réponses: 3
    Dernier message: 23/03/2015, 16h27
  2. comment afficher une image après Kmeans
    Par ryma* dans le forum Images
    Réponses: 0
    Dernier message: 25/05/2011, 23h43
  3. Réponses: 8
    Dernier message: 22/04/2011, 21h27
  4. Comment éviter d'afficher une erreur quand table vide
    Par lelapinrusse dans le forum Langage
    Réponses: 6
    Dernier message: 16/05/2008, 19h00
  5. [PEAR][HTML_QuickForm] Comment afficher une page après validation du formulaire ?
    Par jpinfotech dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 27/11/2006, 15h58

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