cake - 对如何统计数据感到困惑

时间:2013-05-10 05:32:18

标签: cakephp

我知道这个问题非常简单。但是我没能在谷歌找到它。我毕竟是新手。

例如,我有两个模型:ProductCategory

Product index中,我想显示可用类别列表以及该类别中的产品数量。如下所示:

Food (10)
Beverages (7)
...

我成功地循环了可用的类别,但不知道如何计算它。以下是我的循环:

<?php foreach($categories as $c): ?>
    <li> ... <?php echo $this->$c->Product->find('count') ?> </li>
<?php endforeach; ?>
// The ... part is echo-ing the category name

我尝试了很多变化,并且不断收到ArrayHelper not foundProductHelper not found

等错误

任何人都有解决方案吗?

由于

修改

在我添加您建议的foreach循环之前,这是我的 ProductController 代码。

public function index() {
            //the first two lines is default from cake bake
        $this->Product->recursive = 0;
        $this->set('products', $this->paginate());
        $categories = $this->Product->Category->find('all');
        $this->set('categories', $categories);
    }

2 个答案:

答案 0 :(得分:2)

不是计算每个请求的计数,而是使用counter cache功能存储每个类别的产品数量,然后只显示它。

答案 1 :(得分:1)

您正试图在视图文件中调用model,而是可以从控制器本身向您的数组添加产品计数,例如,示例代码为: 控制器中的

$categories = $this->Product->Category->find('all',array('recursive'=>-1));
foreach($categories as $key => $category){
  $categories[$key]['ProductCount'] = $this->Product->find('count',
   array(
     'conditions'=>array('Product.category_id'=>$category['Category']['id'])
   )
  );
}

其中ProductCount可以替换为产品名称