gpt4 book ai didi

CakePHP GROUP 和 COUNT 个项目在列表中返回

转载 作者:行者123 更新时间:2023-12-01 19:15:57 26 4
gpt4 key购买 nike

我知道这里有一些类似的问题,但它们都是关于使用时的

Model->find('all');

但这不是我正在做的事情,我正在做:

Model->find('list');

这就是工作和不工作之间的区别。

<小时/>

给定一组产品,我想查找该组中的所有品牌以及每个品牌的数量。

听起来很简单,这就是我所做的:

$fields = array('Product.brand','COUNT(`Product`.`brand`) AS brand_count')
$brand_data = $this->Product->find('list',array(
'fields'=>$fields,
'conditions'=>$conditions,
'recursive'=>0,
'group' => 'Product.brand'
));
debug($brand_data);

在此,我告诉它给我一个数组,其中键为 Product.brand,值为 COUNT(Product.brand)

我得到这个:

Array
(
[Brand A] =>
[Brand B] =>
[Brand C] =>
)

当我期望这样时:

Array
(
[Brand A] => 534
[Brand B] => 243
[Brand C] => 172
)

如果我执行all而不是list,它就会起作用,但它只会给我一个更复杂的数组来钻取。我可以使用all,我只是首先想看看是否有原因导致它在list中不起作用?

最佳答案

简要回顾:find('list') 在别名字段方面存在问题(因此聚合函数如 COUNT() 等),因此您应该使用 CakePHP 的 1.3反而。对于 CakePHP 1.2 使用,有 a contraption

详细:最有可能的问题在于您的

COUNT(`Product.brand`) AS brand_count

因为 find('list')

Set::combine($results, $lst['keyPath'], $lst['valuePath'], $lst['groupPath']) 

查询结果,其中 $lst['valuePath']

"{n}.COUNT(`Product`.`brand`) AS brand_count"

而在结果中,它实际上是“{n}.Product.brand_count” - 不排队。

尝试将 COUNT() 设为虚拟字段。

即:

//model
var $virtualFields = array(
'brand_count' => 'COUNT(Product.brand)'
);

//controller
$fields = array('Product.brand','Product.brand_count');

关于CakePHP GROUP 和 COUNT 个项目在列表中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6711927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com