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 :

Update attribut cascade


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut Update attribut cascade
    Bonjour,

    J'aimerais savoir si c'est possible de mettre à jour un attribut en fonction d'un autre ?

    J'ai 3 entités A, B et C.
    Chaque entités à un état (OK, KO)

    Si je met l'état de mon entité C à KO, j'aimerais éventuellement (pas obligatoirement car il y a des règles) changer l'état de B et de A.

    Comment je peux faire ?

    Merci.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    au plus simple, en partant du principe qu'il y a des liaisons entre tes entités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class C {
      public function setEtat($etat){
        $this->etat=$etat;
        if($etat='KO'){
           $this->getEntiteBLiee()->doSomething();
        }
        //....
      }
    }
    lorsque tu appelles la méthode flush, cela impacte toutes les entités qui ont été modifiées


    tu peux également regarder du coté des listeners
    http://symfony.com/fr/doc/current/co...bscribers.html

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut
    Merci.

    La première méthode ne marchera pas enfin je crois.. car je ne peux pas récupérer une autre entité dans mon entité.

    Est-ce que c'est possible de faire un getRpository('Mon_entité') dans une entity ??

    J'ai regarder les listener mais je vois pas de quelle manière je pourrais m'en servir.

    Dans ma fonction il ne me manque plus qu'a récupérer les 2 états (OK et KO)
    car je ne peux pas faire ...->setEtat("OK);

    Voilà mon code si sa vous aide à comprendre, il ne manque pas grand chose mais je sais pas du tout là..

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
        /**
         * Set etat
         *
         * @param MeteoApplis\AdminBundle\Entity\ConfIndicateurs $etat
         */
        public function setEtat(\MeteoApplis\AdminBundle\Entity\ConfIndicateurs $etat)
        {
    		// On met à jour l'état de l'application
            $this->etat = $etat;
     
    		// On récupère la criticté de l'application
    		$criticite_application = $this->application->getCriticite();
     
    		// Si l'application est critique et KO alors on met la brique à laquelle l'application est liée à KO.
    		if ($etat->getEtat() == "KO" && $criticite_application == "Critique")
    			$this->application->getBrique()->getBrique()->setEtat($etat);
     
    		// On va chercher dans la liste des applications qui sont rattachées à ma brique si il reste des applications critique et KO
    		$KO_trouver = false;
     
    		// On récupère les applications qui sont rattachées à ma brique
    		$applications_brique = $this->application->getBrique()->getApplications();
     
    		// On parcourt les applications
    		foreach ($applications_brique as $application)
    		{
    			// On récupère l'état et la criticité de chaque applications
    			$etat_application = $application->getApplication()->getEtat();
    			$criticite_application = $application->getCriticite();
     
    			// Si une application est critique et KO on met KO_trouver à true
    			if ($etat_application->getEtat() == "KO" && $criticite_application == "Critique")
    				$KO_trouver = true;
    		}
     
    		// Si on à trouver une application KO et critique on met la brique à KO sinon on la met a OK
    		if ($KO_trouver)
    		{
    			$this->application->getBrique()->getBrique()->setEtat("KO");  // Faux
    		}
    		else
    			$this->application->getBrique()->getBrique()->setEtat("OK"); // Faux
        }

Discussions similaires

  1. [2.x] Update attribut entité cascade
    Par jeyGey dans le forum Symfony
    Réponses: 4
    Dernier message: 24/06/2013, 18h00
  2. UPDATE en CASCADE Oracle 8i
    Par karim_sousse dans le forum Oracle
    Réponses: 5
    Dernier message: 15/09/2009, 15h36
  3. Update en cascade
    Par Maheu dans le forum Débuter
    Réponses: 1
    Dernier message: 17/04/2009, 16h35
  4. Update en cascade
    Par cedced22 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 25/02/2009, 09h41
  5. [ORACLE] : UPDATE en cascade
    Par dcollart dans le forum Oracle
    Réponses: 4
    Dernier message: 28/01/2007, 01h33

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