- 1
[Opened] [Résolu] jDao, addItemGroup et Count
Posted by Jipem on 09/10/2011 18:09
Bonjour,
Nouvel utilisateur de Jelix, je dois faire ce genre de requête MySQL :
SELECT sortie,COUNT(*) FROM sorties GROUP BY lieu_ville
(qui me renverrait le nombre de sorties dans chaque ville)
Pour le moment, avec Jelix j'en suis à :
$dgfiche = jDao::get('sorties~sorties'); $conditions = jDao::createConditions(); $conditions->addItemOrder('lieu_ville','asc'); $conditions->addItemGroup('lieu_ville'); $liste = $dgfiche->findBy($conditions); $count = $dgfiche->countby($conditions); $tpl->assign('liste', $liste); $tpl->assign('count', $count);
Et le .TPL :
<h1>Voir les {$count} sorties</h1> {foreach $liste as $news} <ul> <li><a href="{jurl 'sorties~recherche:index',array('lieu_ville'=>$news->ville)}">{$news->ville}</a> ({$countparville})</li> </ul> {/foreach}
Cependant je n'arrive pas à mettre le $countparville qui renverrait le nombre d'item de chaque ligne.
Pouvez-vous m'aider ?
Merci d'avance.
PS: Et merci pour le développement de Jelix qui facilite bien le travail (quand on maîtrise) !
[Opened] jDao, addItemGroup et Count
Posted by foxmask on 09/10/2011 23:00
Bonsoir, avec une dao comme ceci
<method type="select" name="getSorties" groupby="ville"> <code> <order> <orderitem property="ville" way="desc" /> </order></method> </code>
dans un controleur on peut faire un simple
$tpl->assign('liste',jDao::get('sorties~sorties')->getSorties());
et dans le template faire un
<h1>Voir les {$liste->rowCount()} sorties</h1> {foreach $liste as $news} ... {/foreach}
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] jDao, addItemGroup et Count
Posted by Jipem on 09/11/2011 16:23
Hum, merci de ta réponse, mais non, ça ne rend pas correctement.
Ce que je cherche à avoir, c'est quelque chose genre :
Voir les sorties des 2 villes suivantes : - Lyon (4 sorties actuellement) - Montpellier (2 sorties actuellement)
Il faut donc premièrement compter le nombre de "lieu_ville" différents (pour la phrase "voir les sorties des 2 villes suivantes"). Et ensuite compter le nombre d'items de chaque "lieu_ville" (pour les phrases "sorties actuellement" correspondant à chaque ville).
Ma table ressemble à quelque chose comme :
id | sortie_titre | sortie_date | lieu_ville 1 | Plage | 2011-09-12 | 1 1 | Rando | 2011-09-14 | 2 1 | Piscine | 2011-09-13 | 1 1 | Apéro | 2011-09-19 | 2 1 | Course | 2011-09-17 | 2 1 | Roller | 2011-09-15 | 2
(où lieu_ville 1 correspond à Montpellier, et lieu_ville 2 à Lyon)
[Opened] jDao, addItemGroup et Count
Posted by laurentj on 09/12/2011 09:10
Bonjour,
bienvenue sur jelix.
Ne cherches pas à faire ces choses "complexes" avec jDao. premièrement parce que ce n'est pas possible, et deuxièmement parce que ça n'a pas de sens. Avec jDao, tu es censé travailler sur les enregistrements (récupérer tout les champs) puisqu'un daorecord doit avoir toutes les valeurs des champs correspondant. Et là, tu ne veux pas travailler avec des records, mais récupérer en quelques sortes des statistiques, des champs calculés.
Bref, fait ta requête "spécifique" avec jDb directement.
[Opened] jDao, addItemGroup et Count
Posted by Jipem on 09/12/2011 10:38
Merci Laurent !
- 1