8768 sujets

Développement web côté serveur, CMS

Voilà, j'ai fait une requête via une createQuery pour trouver le nombre de lignes NULL dans une jointure entre 2 table

public function findAllNull()//:array
    {
    $entityManager = $this->getEntityManager();
    $query = $entityManager->createQuery(
        "SELECT COUNT (p)
         FROM App\Entity\Proposition p
         LEFT JOIN App\Entity\Reponse r
         WITH p.id=r.idProposition  
         WHERE p.vrai = '1' AND  r.idProposition IS NULL");
 
    // returns an array of Product objects
    return $query->execute();
         
    }


J'appelle cette fonction depuis mon controller et j'obtiens un array en faisant un dump (cet array contient bien le nombre correspondant au résultat de la requête :



$repository = $this->getDoctrine()->getRepository(Proposition::class);

    $null = $repository->findAllNull();
    dump($null);



Mais je cherche comment récupérer cette valeur pour pouvoir la traiter, afficher etc... Smiley sweatdrop Smiley sweatdrop
Bonjour moko, je ne suis pas sur d'avoir bien compris ta demande... Que souhaites tu récupérer exactement? Chaque valeur pour les afficher une par une, ou déterminer le nombre de résultats et l'afficher?

Peux-tu nous mettre le résultat du dump stp?
La requête count renvoi un nombre... mais celui ci se trouve intégré dans un tableau comme ceci :


array:1 [?
  0 => array:1 [?
    1 => "4"
  ]
]


4 étant le resultat de ma requête
Merci les amis,
J'ai trouvé en créant un alias et en faisant ça :


 public function findAllNull()//:array
    {
    $entityManager = $this->getEntityManager();
    $query = $entityManager->createQuery(
        "SELECT COUNT (p) AS retenu
         FROM App\Entity\Proposition p
         LEFT JOIN App\Entity\Reponse r 
         WITH p.id=r.idProposition   
         WHERE p.vrai = '1' AND  r.idProposition IS NULL");

  
    $result= $query->execute();
    
    return $result[0]['retenu'];


Smiley smile
Modifié par moko (22 May 2019 - 11:05)