我知道这个问题非常简单。但是我没能在谷歌找到它。我毕竟是新手。
例如,我有两个模型:Product
和Category
。
在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 found
或ProductHelper 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);
}
答案 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
可以替换为产品名称