Partage
  • Partager sur Facebook
  • Partager sur Twitter

Somme des attributs dans une entité , Symfony 3

Sujet résolu
    14 septembre 2017 à 10:50:14

    Bonjour, J'utilise Symfony 3 .J'ai une entité "Audit.php" qui contient plusieurs attributs de type Boolean (0/1) et qui contient un attribut $totalAudit.
    Je veux affecter la somme de toutes ces attributs à $totalAudit afin d'afficher cette somme par la suite. Quelqu'un peut m'aider pour faire Ceci ?? Merci
    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2017 à 11:34:12

      $totalAudit = 0;
      if($attribut1 == true)
      {
         $totalAudit += 1;
      }
      if($attribut2 == true)
      {
         $totalAudit += 1;
      }
      • Partager sur Facebook
      • Partager sur Twitter
        14 septembre 2017 à 11:41:12

        Bonjour, Merci cretthie pour votre réponse , j'ai essayé de déclarer $totalAudit dans le constructeur mais ça ne marche pas ,

        public function __construct($aspect,$dimensionnel,$confMarquage,$confEtiquetage,$confCondisonnement,$documentation,$defautheque,$caracProduit,$caracProduitPoste,$demarrage,$journalBord,$habilite,$param, $confComposant, $consignes,$epi,$proprete, $pokaYoke,$outillage,$maquette,$fifo, $tracabilite, $nonConfId,$csr)
            {
               $this->totalAudit = $aspect+$dimensionnel+$confMarquage+$confEtiquetage+$confCondisonnement+$documentation+$defautheque+$caracProduit+$caracProduitPoste+$demarrage+$journalBord+$habilite+$param+$confComposant+$consignes+$epi+$proprete+$pokaYoke+$outillage+$maquette+$fifo+$tracabilite+$nonConfId+$csr

        Pouvez vous m'aider dans ce sens ?? Ou bien je dois remplacer mon code par celui que vous avez proposé ??

        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2017 à 11:51:13

          En fait, un boolean correspond à 0 pour false et à 1 pour true.

          Donc, normalement ca devrait fonctionner avec ton code. Je dirais meme que ton code est meilleure que le mien, car, les conditions (if) consomme beaucoup de processeur.

          Bon, il manque un point virgule à la fin de la ligne.

          Mais sinon as-tu une erreur ou pas ? Quel est le problème exactement ?

          -
          Edité par cretthie 14 septembre 2017 à 11:55:28

          • Partager sur Facebook
          • Partager sur Twitter
            14 septembre 2017 à 12:00:09

            Il me donne l'erreur suivante :

            Warning: Missing argument 1 for Action\ActionBundle\Entity\Audit::__construct(), called in C:\wamp\www\PlanAction\src\Action\ActionBundle\Controller\AuditController.php on line 42 and defined

            La 42 de mon Controller correspond à :

            public function newAction(Request $request)
                {
                    $audit = new Audit(); // Ligne 42
                    $form = $this->createForm('Action\ActionBundle\Form\AuditType', $audit);
                    $form->handleRequest($request);
            
                    if ($form->isSubmitted() && $form->isValid()) {
                        $em = $this->getDoctrine()->getManager();
                        $em->persist($audit);
                        $em->flush();
            
                        return $this->redirectToRoute('audit_show', array('idAudit' => $audit->getIdaudit()));
                    }
            
                    return $this->render('ActionActionBundle:audit:new.html.twig', array(
                        'audit' => $audit,
                        'form' => $form->createView(),
                    ));
                }



            pour le ; j'ai juste oublié de le copier içi :) :( :(

            Edit : 

            Je dois appeller $audit = new Audit($apect,....); à chaque fois ça sera lourd ! y'a t'il autre solution ?? coment dois-je faire par le setter ??

            -
            Edité par kkddd 14 septembre 2017 à 12:15:31

            • Partager sur Facebook
            • Partager sur Twitter
              14 septembre 2017 à 13:05:25

              Donc ton problème viens des arguments dans la route.

              Si j'ai bien compris, tu as un champ totalAudit dans ton entité Audit ?

              Si oui, pourquoi ne pas faire :

              if ($form->isSubmitted() && $form->isValid())
              {
                  $audit->setTotalAudit($audit->getAspect()+$audit->getDimensionnel(), ...);
                  $em = $this->getDoctrine()->getManager();
                  $em->persist($audit);
                  $em->flush();
              }

              Maintenant pour ta route, il manque un argument !

              Il me semble que tu as oublié de mettre ca dans la déclaration de ton controller :

              public function newAction(Request $request, $audit_id)

               Pour être plus clair, pour récupérer l'audit_id de ta route, tu dois le mettre dans les paramètre de ton controller.

              -
              Edité par cretthie 14 septembre 2017 à 13:08:12

              • Partager sur Facebook
              • Partager sur Twitter
                14 septembre 2017 à 13:23:23

                Merci Cretthie ! je l'ai fait avec le setTotalAudit et ça marche impec (y)
                • Partager sur Facebook
                • Partager sur Twitter
                  14 septembre 2017 à 13:39:12

                  Coool, mets le sujet en résolu :)

                  Bon codage.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 septembre 2017 à 17:22:39

                    Hello,

                    En fait tu n'as pas besoin de créer un nouvel attribut pour cela. Tu peux simplement définir une fonction qui retourne cette somme. Stocker l'information en base de données n'est pas utile ici car cela n'apporte rien (tu peux déduire cette information en utilisant les autres attributs).

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 septembre 2017 à 12:06:48

                      Merci Winzou pour ta réponse mais j'aurais besoin de cet attribut dans ma partie Reporting Merci
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Somme des attributs dans une entité , Symfony 3

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown