Partage

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
14 septembre 2017 à 11:34:12

$totalAudit = 0;
if($attribut1 == true)
{
   $totalAudit += 1;
}
if($attribut2 == true)
{
   $totalAudit += 1;
}
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é ??

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

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

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

14 septembre 2017 à 13:23:23

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

Coool, mets le sujet en résolu :)

Bon codage.

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).

18 septembre 2017 à 12:06:48

Merci Winzou pour ta réponse mais j'aurais besoin de cet attribut dans ma partie Reporting Merci

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é.
  • Editeur
  • Markdown