CakePHP计数循环

时间:2012-07-02 21:18:44

标签: cakephp loops count items

我扩展了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的新手,非常感谢任何帮助。

2 个答案:

答案 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
}