Salut, ma question du jour va être toute bête mais je comprend pas le count de cake :P

En gros,

  • je recherche le nombre de post : ok
  • je recherche le nombre de post pour tel utilisateur ok
  • je recherche le nombre d'article groupé par status : marche pas

Dès que je veux faire un groupement, ça marche pas, je suis obligé de passer par un find('all') et je voudrais savoir si c'est normal ou si c'est moi qui ne comprends pas lol.

Ce qui est assez embêtant, c'est qu'avec un code pareil

debug($this->Comment->find('all',array(
    'fields'=>array('COUNT(*) AS total, Comment.post_id'),
    'conditions'=>array('Comment.approved'=>0),
    'group'=>'Comment.post_id'
)));
// on obtient ça, qui oblige à faire un traitement supplémentaire, 
//pour remettre le total au bon endroit, il n'y a pas un moyen que cake le fasse comme un grand !
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [total] => 1
                )
            [Comment] => Array
                (
                    [post_id] => 87
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [total] => 3
                )
            [Comment] => Array
                (
                    [post_id] => 110
                )
        )
)

Bon après c'est pas gênant mais si quelqu'un sait, ça serai cool de faire partager.

Merci.

4 réponses


Je te conseil de regarder au niveau de la déclaration de ta liaison et le membre counterCache : http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#countercache-cache-your-count.

tu trouveras ton bonheur.

elscorto
Auteur

J'ai déjà un CounterCache pour le total de commentaires par articles, et ça fonctionne très bien, le truc, c'est que le champ qui me permet de calculer le couterCache, qui est Comment.approved, peut valoir soit 1=>approuvé,0=>en attente,spam=>je te fais pas la traduction :),trash=>en corbeille.

Et là je souhaité récupérer le nombre de coms en attente groupé par article, et là le count, il fonctionne pas, obligé de passer par un find('all')

Mais merci quand même.

ah ok j'avais pas percuté du coup : $this->Comment->find('count',array('conditions'=>array('Comment.approved'=>0),'group'=>'Comment.post_id')); ne passe pas c'est bien ça ?
C'est juste pour être sûr (hein je fatigue) :x

elscorto
Auteur

pas de soucis lol, sinon ouais ça ne passe pas mais c'était juste pour savoir si c'était normal ou si c'est moi qui buggé(fatigue aussi ;) )