CakePHP 2.2
我使用树行为为我的类别构建了一个嵌套的垂直菜单。在这些类别中有产品。我想要实现的是具有指定类别中包含的产品数量的类别名称旁边。这是一个例子:
Automobile (100) > SUV (35)
> Pickup (25)
> Berline (40)
在该类别旁边,我们可以看到其中的产品数量。
我在网上查了一下,找到了这个教程:http://mrphp.com.au/blog/fun-tree-behaviour-cakephp “查找您的数据”最后一部分中有一行显示了如何实现这一目标:
// count the posts in the given category and all subchildren recursively
$id = 123;
$postCount = $this->Category->postCount($id);
debug($postCount);
此代码中的问题是它使用postCount(),但在我的情况下,我的类别没有帖子而是产品,换句话说,我使用Product模型和ProductsController,因此它无法工作。我能做到吗?
[编辑]
我找到了解决方案。首先,我在我的类别表中创建了一个新字段,并将其命名为product_count(关联表的奇异名称)。然后我在ProductsController.php中添加了belongsTo。如下:
public $belongsTo = array(
'Category' => array(
'counterCache' => true
)
);
最后在我的垂直菜单的foreach中,我只是将其添加到类别名称旁边:
$v['Category']['product_count']
现在它正在运作!
答案 0 :(得分:0)
将postCount函数替换为:
function productCount($id, $direct=false){
if (!$direct) {
$ids = array($id);
$children = $this->children($id);
foreach ($children as $child) {
$ids[] = $child['Category']['id'];
}
$id = $ids;
}
$this->Product->recursive = -1;
return $this->Product->findCount(array('category_id'=>$id));
}