Bonsoir, je viens vers vous parce que depuis ce matin j'ai un problème avec une requete,
voici mon problème :
Je souhaite regroupé les differents "label" du meme type ensemble et les compter, actuellement ma requete tout les "label" que je recupère mais ils sont pas classé du genre exemple : un fichier json :
moi je souhaite recevoir par exemple un truc du style :
+ public function findArchives($station, $month, $years)
+ {
+ $qb = $this->createQueryBuilder('s');
+
+ $archives = $qb
+ ->select('s.id as station,
+ e.currentTime as date,
+ COUNT(e.label) as number,
+ e.label as type,
+ DAY(e.currentTime) as day
+ ')
+ ->join('s.events', 'e')
+ ->where('s.id =:stationName')
+ ->andWhere('MONTH(e.currentTime) =:month AND YEAR(e.currentTime) =:year')
+ ->groupBy('day')
+ ->setParameter('stationName', $station)
+ ->setParameter('month', $month)
+ ->setParameter('year', $years)
+ ;
+
+ return $archives->getQuery()->getResult();
+ }
en gros le but final est que je dois récupéré les données d'une station sur un jour précis et les enregistré dans un fichier. j'arrive a tout faire mais j'arrive pas a classer correctement mes données.
hello, j’avais essayer le »addgroupby » mais j’ai pas eu le resultat que je voulais. ma requête est surement a un default. je me suis surement mal explique, je cherche a compter chaque label qui sont sortie le meme jour et les grouper ensemble (exemple compter le nombre d’humans /heavy/light qui sont sortie un jour precis)
si tu connais le jour, alors il te suffit de faire un groupBy('label') avec une condition sur le jour. (mais dans ta requête il me semblait que tu voulais récupérer tous les jours d'un mois)
Bonjour, en fait je dois affiche des donnes (ex: je fais un filtre sur une station, un mois et une annees) Donc ca pour cela fonctionne, mais le problemes est que je dois recupere les donnes qui se sont passer dans cette station a ce jour precis
désoler je me suis surement mal exprimer, quand je fais le filtre sur le mois et l'année je recois une liste de stations choisis qui sont associées a cette période, donc oui c'est normal, puis mon groupby() sur day c'est juste pour grouper les memes jours, mais quand je fais un autre groupby() sur "label" cela casse tout
Chaque entrée du tableau correspond bien à 1 jour et 1 type. Ensuite il te reste juste à gérer ton affichage avec soit une condition sur le changement de date, soit de faire un nouveau tableau à partir de celui là pour regrouper les dates.
Merci d'avoir teste, je recevais effectivement la meme reponse que toi, je pensais que je pouvais tout regroupe dans un meme tableau selon les date, donc je vais partir sur ta deuxième solution, reste a voir comment je vais l'implémenté
En ce qui me concerne, je ne suis pas partisan de faire une boucle pour formater des données puis une autre pour les afficher dans le cas où la seconde n'a pas nécessairement besoin du format généré par la première.
Tu cherches à avoir quoi comme affichage au final ?
en gros je récupère mes stations que j'ai filtré avec le mois, l'années et le nom de la stations ( pour le moment j'ai pas de problèmes avec cette partie)
puis je doit recupéré toutes les données liée a cette station et mois/années, ces données devront etre classé par ordres (nombre de humans/light etc... par leurs quantité facon) et elles seront affichées dans un fiché cvs que j'ai déja codé. le plus galère c'est de classé c'est données.
j'ai fais la méthode de Ralchimist mais elle me retourne un tableau sans tout groupé enssemble (j'ai surement mal fais ou mal compris)
La méthode qui t'a été proposée est bonne, maintenant je maintiens que tu n'as pas besoin de faire une boucle pour avoir un tableau des données par jours.
Regarde ce sujet. L'algorithme donné est indépendant de la requête, il ne se base que sur un ensemble de données. Maintenant, ses films sont tes dates et ses acteurs sont tes types (heavy, human et light). Plus besoin de construire un tableau de type { '2019-08-07': { 'human': 2, 'heavy': 4, 'light': 5} … }. La seule "subtilité" est qu'il faut ordonner par jour et éventuellement par type.
× 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.
et tu obtiendras ça par exemple: (j'ai généré des données au hasard chez moi)