我扩展了CakePHP博客教程,并为我的帖子添加了类别。帖子模型属于类别模型。在我的帖子视图中,我循环播放了我的类别表,列出了视图中菜单的类别,工作正常:
/* gets the category names for the menu */
$this->set('category', $this->Post->Category->find('all'));
现在我正在尝试将帖子计数添加到每个菜单(类别)项目。到目前为止我得到了这个:
/* gets the category count for category 2*/
$this->set('category_2_count', $this->Post->find('count', array(
'conditions' => array('Category.id =' => '2'))));
问题是我显然不能在我的视图中使用循环了。有了这个,我必须得到每个类别+每个Count,这看起来非常不优雅。有没有办法查询类别名称和计数,并为视图获取一个数组?
任何想法?我是Cake的新手,非常感谢任何帮助。
答案 0 :(得分:0)
试试这个:
$stats = $this->Category->Post->find('all', array(
'fields' => array(
'Category.*',
'COUNT(Post.id) AS cnt'
),
'group' => 'Category.id'
));
答案 1 :(得分:0)
在您的控制器中:
$this->set('category', $this->Post->Category->find('all', array(
'fields' => array(
'*',
'(SELECT COUNT(*) FROM posts WHERE category_id = Category.id) AS `post_count`'
)
)));
在您看来:
foreach ($category as $c) {
echo $c['Category']['name']; // category name
echo $c[0]['post_count']; // post count
}