J'ai une simple application cakephp
avec la table articles
qui a une colonne cat_id
pour référencer une colonne de catégories id
dans un tableau cats
.Compte le nombre d'articles dans une catégorie en utilisant CakePHP?
Ce que je voudrais faire est d'afficher tous les noms de catégories, chacune suivie d'un compte du nombre d'articles appartenant à cette catégorie.
Je sais qu'il existe une fonction find('count')
dans cakephp
, mais qui ne fonctionne que sur une table/champ. Comment puis-je lier les deux tables pour obtenir une liste de noms de catégories et le nombre d'articles pour chaque catégorie pour mon affichage?
Merci
Cela fonctionne probablement, mais je pense qu'il y a un meilleur moyen. vous devriez utiliser la fonction Set :: combine au lieu de foreach. Quelque chose comme ce que je pense est plus efficace: $ category_count = $ this-> Article-> find ('all', tableau ( 'fields' => array ('Category.name', 'COUNT (Article.id) AS num_articles '), ' group '=>' Category.id ', ' conditions '=> $ conditions )); $ category_count = Set :: combine ($ category_count, '{n} .Category.name', '{n} .0.num_articles'); Cela suppose que vos relations de modèle sont correctement configurées. – jimiyash
Cela fonctionne, mais au point de dhofstet vous dupliquez le code qui existe déjà dans le modèle sous la forme de CounterCache. –