Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony] SUM récalcitrant selon le contenu

    24 janvier 2017 à 21:31:18

    Bonjour

    J'ai dans ma base 5 colonnes correspondant à 5 types de prix.Je fais donc un SUM pour avoir le total de ces 5 colonnes. Cependant si une de ces colonnes ne contient aucun prix (donc NULL) la somme ne se fait pas.

     public function getTotal($annee) {
            $q = $this->createQueryBuilder('f')
                    ->select('SUM(f.Prix1)+SUM(f.Prix2)+SUM(f.Prix3)+SUM(f.Prix4)+SUM(f.Prix5)')
                    ->where('YEAR(f.Dateprix)=:annee')
                    ->setParameter(':annee', $annee);
    
            return $q->getQuery()->getSingleScalarResult();
        }

     Dois-je prévoir de rendre les champs obligatoirement remplis (nullable=false) et si le formulaire n'est pas rempli alors on met 0 (à la place de NULL)? oui bien je me plante totalement...

    Merci pour votre aide



    -
    Edité par lodemars 24 janvier 2017 à 21:32:05

    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2017 à 22:26:28

      En effet SUM ne fonctionnera pas avec un champ vide.

      Le mieux est de placer un default a 0 en effet. Pour le nullable=false je sais pas si ca va pas te planter l'enregistrement car je ne sais pas si le default passe avant ou apres la verification de null. Teste tu verra bien

      • Partager sur Facebook
      • Partager sur Twitter
        25 janvier 2017 à 10:15:35

        J'ai mis 0 par défaut avec mon form :

         'data' => '0'

        Dans ce cas la, les champs étant donc forcément renseigné, le null n'est plus d'actualité. Ca semble marcher.

        Merci Psychotik.

        • Partager sur Facebook
        • Partager sur Twitter

        [Symfony] SUM récalcitrant selon le contenu

        × 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