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

2024-05-01

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

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 的使用,有一个装置 http://nuts-and-bolts-of-cakephp.com/2008/09/04/findlist-with-three-or-combined-fields/.

Detailed: 最有可能的问题在于你的

COUNT(`Product.brand`) AS brand_count

Because find('list') does

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

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

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

而结果实际上是"{n}.Product.brand_count"- 不排队。

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

I.e.:

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

//controller
$fields = array('Product.brand','Product.brand_count');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP GROUP 和 COUNT 个项目在列表中返回 的相关文章

随机推荐

  • playframework 全局设置 @Required 字段的自定义消息

    我正在寻求有关翻译 Play 框架 2 2 中的验证消息的帮助 我有必填字段 FE Required message To pole jest wymagane public String miesiac Required public S
  • 在 Gradle 中跳过禁用任务的依赖执行?

    是否有可能not当任务将被跳过时执行该任务的依赖项 在下面的例子中 我想jar 以及依赖项jar to not执行时如果服务器已经在运行则执行runServerTests 在这种情况下 服务器将由另一个进程启动 apply plugin j
  • PHP 未定义索引/未定义偏移解决方法[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 注意 未定义的变量 和 注意 未定义的索引 https stackoverflow com questions 4261133 php notice undefined variable an
  • 经典的 asp/vbscript - 使用正则表达式修改所有 href

    在经典 ASP VB 脚本 中 我需要通过对当前 url 进行编码并在其前面挂起来修改字符串中包含的多个不同的 href 基本上 我想让所有的 href 都通过我的redirect asp 并将现有的 href 编码传递到新链接中 例如 现
  • JavaScript 日期对象 英国日期

    我有以下代码 datePicker change function dateSet datePicker val dateMinimum dateChange dateSetD new Date dateSet dateMinimumD n
  • 什么是克朗?我该如何使用这个? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions http
  • 如何扩展 gradle 的 clean 任务来删除文件?

    到目前为止 我已将以下内容添加到我的 build gradle 中 apply plugin base clean lt lt delete rootDir api library auto generated classes printl
  • 注册不起作用 - 服务器返回 404 错误代码

    MongoDB Stitch iOS SDK 注册问题 我试过这个 let stitchClient StitchClient appId
  • 在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用

    Quoting https phpunit readthedocs io en 9 5 writing tests for phpunit html testing php errors warnings and notices https
  • 如何使用 -fPIC 标志重新编译 libperl.a 目标文件?

    当试图修复一些问题时出现了这个问题安装问题 https stackoverflow com q 43191675 2173773 with QtCore4 https metacpan org pod QtCore4 在某一点make尝试运
  • 使用 pdfbox 1.8.8 进行视觉签名

    我正在尝试生成带有视觉签名和 pdfbox 的 PDF 我有两个流 似乎 pdfbox 只能处理文件 如果没有三个临时文件 我就无法使其工作 我可以看到从here https github com apache pdfbox blob b7
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • Symfony 功能测试失败,但相同的请求在浏览器中有效

    我跟着Symfony 文档 http symfony com doc current book testing html functional tests关于功能测试 以便编写我的第一个测试 但我有一些问题 我通过浏览器得到的响应效果很好
  • Heroku:无法访问该网站

    我的 heroku 应用程序在构建后无法访问 日志显示 Web 服务器节点和工作节点都在监听 这是一个由 Gunicorn 运行的 Flask 应用程序 它有 2 个插件 newrelic 和 redistogo Error This si
  • 面临减法时的算法复杂性

    我必须简化以下公式才能获得算法的时间复杂度 n 2 n 3 是否有任何适用的规则可以让我进一步简化这个表达式为更 常见 的 n 2 或类似的东西 我假设这就是结果 可能是错误的 我根本不知道如何处理这里的减法 通常 如果两个值相加 您只考虑
  • OpenGL:调试“单通道线框渲染”

    我正在尝试实现论文 单通道线框渲染 它看起来很简单 但它给了我所期望的厚暗值 论文没有给出计算海拔高度的确切代码 所以我按照自己认为合适的方式进行了操作 代码应该将三个顶点投影到视口空间中 获取它们的 高度 并将它们发送到片段着色器 片段着
  • 无法在 Dockerfile 中运行 sysctl 命令

    我正在尝试制作我的第一个 dockerfile 我对此很陌生 并且我需要系统来运行命令sysctl w kernel randomize va space 0 它是一个实验室环境 但我收到错误 sysctl 设置键 kernel rando
  • PyPandoc 与 PyInstaller 结合使用

    我安装了 PyInstaller 来为我的 python 脚本创建可执行文件 效果很好 我使用 PyPandoc 创建 docx报告 当正常的 python 文件运行时 它也可以正常运行 但不能从 PyInstaller 生成的可执行文件运
  • Python Flask 将基于经纬度的半径过滤器计算转换为 SQLalchemy

    我目前正在尝试实现半径的计算 我有一个带有房间的数据库 每个房间都有不同的地址以及纬度和经度 用户可以在搜索表单中输入城市名称来搜索该城市的房间 这里我想显示一个结果页面 其中包含搜索城市的房间 搜索城市半径60公里内其他城市的所有房间 H
  • CakePHP GROUP 和 COUNT 个项目在列表中返回

    我知道这里有一些类似的问题 但它们都是关于使用时的 Model gt find all 但这不是我正在做的 我正在做的 Model gt find list 这就是工作与不工作之间的区别 给定一组产品 我想找到该组中的所有品牌以及每个品牌的