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

Doctrine2 PHP Discussion :

remove [2.x]


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut remove
    Bonjour,

    J'ai un pb que je n'arrive pas à résoudre, j'essaie de faire un remove, mais rien ne se passe, le traitement passe bien dessus, mais semble l'ignorer et aucune anomalie n'est remonté.
    Je pense que cela vient du ManyToOne, mais je ne sais comment faire!

    mon FicheSuivicontroller
    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
    22
    23
    24
    25
    26
    27
     
        public function ValiderSaisie(FicheSuiviRepository $em, ObjectManager $manager) // Validation des fiches de suivi
        {
            // On passe les fiches en valide
            // On supprime les fiches vides
            $listeFicheSuivi = $em->toutesFichesEnregistreNonValide();
            foreach($listeFicheSuivi as $ficheSuivi){
                if($ficheSuivi->getDeplacement() == null &&
                    $ficheSuivi->getAbsence() == null && 
                    $ficheSuivi->getActivite() == null && 
                    $ficheSuivi->getChantier() == null){
                    // On supprime la fiche vide
                    $manager->remove($ficheSuivi);
                    $manager->persist($ficheSuivi);
                }
                else{
                    // On valide la fiche
                    $ficheSuivi->setValide(true);
                    $manager->persist($ficheSuivi);
     
                }
            }
            $manager->flush();
            return $this->render('fichesuivi/message.html.twig', [
                'message' => "Validation des fiches réalisée avec succès"
                ]);
        }
    mon entité FicheSuivi pour la partie intervenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        /**
         * @ORM\ManyToOne(targetEntity="App\Entity\Intervenant", inversedBy="ficheSuivis")
         * @ORM\JoinColumn(nullable=false)
         */
        private $intervenant;
    Mon entité Intervenant pour la partie FicheSuivi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        /**
         * @ORM\OneToMany(targetEntity="App\Entity\FicheSuivi", mappedBy="intervenant")
         */
        private $ficheSuivis;

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Salut,

    Est-ce que tu est certain que l'exécution passe bien dans le if où tu fais le remove à chaque tour de boucle ?

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut
    Tout à fait, j'ai mis des dump() pour vérifier le circuit et il n'y a pas de choix, c'est soit valide() = true ou remove.
    J'ai tordu le truc dans tous les sens et je ne comprend pas.
    En fait il y a beaucoup de choses que je comprend pas

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Est-ce qu'il ne faut pas plutôt utiliser l'EntityManager ($em) à la place de ton ObjectManager ($manager) pour faire les remove, persist et flush ?

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Par défaut
    je viens de tester et cela ne fonctionne pas
    j'ai remplacé ObjectManager par EntityManager et voilà le message :

    Cannot autowire argument $manager of "App\Controller\FicheSuiviController::ValiderSaisie()": it references class "Doctrine\ORM\EntityManager" but no such service exists. Try changing the type-hint to one of its parents: interface "Doctrine\ORM\EntityManagerInterface", or interface "Doctrine\Common\Persistence\ObjectManager".

    Il semblerait qu'il faille utiliser ObjectManager

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonjour!

    Je ne comprends pas ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $manager->remove($ficheSuivi);
    $manager->persist($ficheSuivi);
    Pourquoi supprimer, puis sauvegarder le même objet?

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

Discussions similaires

  1. [C#] listview remove
    Par betaphp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/12/2005, 13h11
  2. remove non letters
    Par siham_06 dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 22h36
  3. macro=remove des lignes d un fichier xls et reorga
    Par af_airone dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/10/2005, 15h08
  4. problème de remove
    Par c_Linoa dans le forum C++
    Réponses: 13
    Dernier message: 28/04/2005, 11h21
  5. [debutant] remove() pourri?
    Par JulienDuSud dans le forum Windows
    Réponses: 4
    Dernier message: 05/12/2004, 17h31

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