0

我扩展了 CakePHP 博客教程,并为我的帖子添加了类别。Posts 模型属于类别模型。在我的帖子视图中,我正在循环抛出我的类别表以列出视图中菜单的类别,这工作正常:

/* 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'))));

问题是我显然不能再在我的视图中使用循环了。有了这个,我必须得到每个类别 + 每个计数,这似乎很不雅。有没有办法查询类别名称和计数并为视图获取一个数组?

有任何想法吗?我是 Cake 的新手,非常感谢任何帮助。

4

2 回答 2

0

试试这个:

$stats = $this->Category->Post->find('all', array(
    'fields' => array(
        'Category.*',
        'COUNT(Post.id) AS cnt'
    ),
    'group' => 'Category.id'
));
于 2012-07-02T21:53:44.430 回答
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
}
于 2012-07-03T18:12:17.727 回答