Hello, j'ai l'habitude d'utiliser counterCache avec BelongsTo comme ceci par exemple :
Un post appartient à une catégorie.

     // Dans mon modèle post
     public $belongsTo = array(
        'Category' => array(
            'counterCache' => array('post_count')
        )
        )

        // Dans mon modèle Category
        public $actsas = array('Containable');

Ensuite j'insère un champ "post_count" dans ma table Categories et le champ se met à jour automatiquement dès qu'un nouveau post est rentré avec cette catégorie.

En revanche mon problème est que je ne parviens pas à faire fonctionner ça avec hasMany.
Par exemple un User hasMany Posts. (ici les utilisateurs peuvent rédiger des articles et j'aimerai pouvoir compter le nombre d'articles d'un utilisateur)

J'ai donc essayé de mettre un champ "post_count" dans ma table Users et j'ai associé les modèles Post et User
avec :

        // modèle User
        public $hasMany = array (
        'Post',
        );

(Le modèle Post et User sont "Containable tous les 2 pour les besoins de l'application)

Une idée pour faire fonctionner un counterCache avec HasMany ?

2 réponses


JC_Pires
Réponse acceptée
  // model Post

  public $belongsTo = [
      'User' => [
          'counterCache' => true
      ]
  ]

Dans ta table Users le champ post_count et go ça fonctionnera. Tu ne peut pas faire de counter cache sur un HasMany mais uniquement sur un belongsTo. Je comprend pas tu as la solution avec tes category mais tu n'as pas pensé que c'était pareil pour tes Users

Oui j'ai fini par faire ça. Je ne savais juste pas qu'on pouvait faire un count uniquement sur un belongsTo. Merci de la précision importante @jean-Christophe