laravel 在 groupBy 之后使用 count/sum 方法

2024-01-01

当我使用count or sum方法,我得到了错误的结果。

例如:

Member::groupBy('id')->count()

我用另一种方法只得到结果1

Member::count()

我得到了正确的结果。

使用时得到错误的结果sum method.

https://github.com/laravel/framework/issues/14123 https://github.com/laravel/framework/issues/14123

忘了说,我的 laravel 版本信息:

Laravel Framework version 5.1.40 (LTS)



实际项目中的问题

我有一个充值日志表.

1.工资日志表

CREATE TABLE pay_logs (
   id int(11) NOT NULL AUTO_INCREMENT,
   amount decimal(20,2) DEFAULT '0.00',
   pay_sn varchar(20) DEFAULT NULL,
   join_date int(11) unsigned DEFAULT '0',
   PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.1 工资日志表数据

INSERT INTO pay_logs (id, amount, pay_sn, join_date)
VALUES
  (1,10.00,'aabbcc',1466753291),
  (2,10.00,'aabbcc',1466753292),
  (3,20.00,'bbccdd',1466753292),
  (4,30.00,'ccddee',1466753292);

2.说明

pay_log表中,1和2记录是相同的。所以当我想按照实际充值成功的时间来过滤结果时,我只需要一条记录,所以我使用了groupBy操作。

我的错误操作

DB::table('pay_log')
 ->whereBetween('joinDate',[$beginToday,$endToday])
 ->where('isSucceed','=',1)
 ->where('type','=',1)
 ->groupBy('pay_sn');
 ->count();

最后,解决它。

$query = DB::table('pay_log')
 ->select(DB::raw('count(*) as num'))
 ->whereBetween('joinDate',[$beginToday,$endToday])
 ->where('isSucceed','=',1)
 ->where('type','=',1)
 ->groupBy('pay_sn');

ps: 如果使用 Eloquent ORM

modify ->mergeBindings($query) to ->mergeBindings($query->getQuery())



测试实例(discard

  1. 创建表sql

    CREATE TABLE members ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(15) DEFAULT NULL, amount decimal(20,2) DEFAULT '0.00', PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

  2. 测试数据

    INSERT INTO hc_members (id, name, amount) VALUES (1,'aaa',10.00), (2,'bbb',10.00), (3,'ccc',10.00);

  3. 测试结果

我希望当我使用该方法时Member::groupBy('name')->count()

I want result 3

实际上它返回 1.


当我使用该方法时Member::groupBy('name')->sum('amount')

I want 结果 30.00

实际上它返回 10.00



感谢您的回答帮助我解决问题!


这对 laravel 来说不是问题,因为Member::groupBy('id')->count()将返回每个 id 的结果数。 (Laravel 仅返回查询结果的第一行。)

尝试运行此查询

SELECT COUNT(*) AS aggregate FROM members GROUP BY 'id'

它将返回每个 (id) 聚合的行数计数。这是调用时执行的查询Member::groupBy('id')->count()Laravel 只期望一行,返回第一个聚合的计数。

如果你想计算不同 id 的数量,你可以调用

Member::distinct('id')->count('id')

这与您的 sum 查询也返回 10 的原因相同。查询返回具有相同“名称”的组的“金额”总和。

要获得所有金额的总和,只需致电,

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

laravel 在 groupBy 之后使用 count/sum 方法 的相关文章

  • postgreSQL 在 WAMP 上的集成

    我刚刚在 Windows 7 上安装了 postgreSQL 我正在尝试将 postgreSQL 与 WAMP 服务器集成 为此 我在 httpd conf 和 php ini 文件中进行了以下更改 1个加载模块c path to libp
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 为什么 PHP 中不允许“传统”类型提示?

    刚刚发现类型提示 http php net manual en language oop5 typehinting phpPHP 中允许 但不适用于整数 字符串 布尔值或浮点数 为什么 PHP 不允许对整数 字符串等类型进行类型提示 从 P
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • 如何在 Zend Framework 中处理移动设备?

    我接手了一个噩梦般的项目 我正在迁移一个写得很差的站点 并慢慢地将其迁移到 Zend Framework 应用程序中 不幸的是 我没有时间做补救工作 使这变得可以忍受 也许是一个或两个模型 我现在被告知该网站很快就会有移动版本 建议是克隆旧
  • 包含包含文件的 php 文件

    这是目录结构 global php includes class bootstrap php includes init php plugins myplugin php 这是这些文件中的代码 start php require inclu
  • 如何在 WordPress 中按类别获取所有帖子

    我想在 WordPress 中按类别获取帖子 args array post type gt project postslist get posts args 0 gt WP Post 对象 ID gt 421 post author gt
  • 来自本地 XML 的模拟 SoapClient 响应

    我想用文件中的 XML 来模拟 SoapClient 的响应 我如何创建一个 stdClass 对象 就像 SoapClient 从文件返回一样 客户端已经包装了 SoapClient 因此可以轻松模拟响应 我的模拟是这样的 soapCli
  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • Doctrine 1 和 Symfony 1 的多个主键?

    我已经知道在 Symfony 1 和 Doctrine 1 中不可能使用多个主键 但是你们知道有什么好的解决方法吗 除了多对多关系之外 原则 1 不适用于多列上的主键 但如果你想使用多对多关系 请像这样使用 BlogPost columns
  • 模拟/存根在 PHPUnit 中实现 arrayaccess 的类的对象

    这是我正在为其编写测试套件的类的构造函数 它扩展了 mysqli function construct Config c store config file this gt config c do mysqli constructor pa
  • 选取散列第 N 个元素的最快方法

    我有一个大哈希表 带有字符串索引的数组 并正在寻找一个函数quickly从中选取第一个 理想情况下也是第 N 个 元素 array shift and reset 对于我的需求来说太慢了 UPDATE 我也不是在寻找基于引用的解决方案 该函
  • PHP 错误警告:参数 1 应该是引用

    我 熟悉 PHP 我的朋友的网站因错误而崩溃 Warning Parameter 1 to Some function name expected to be a reference value given in public html i
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • 我怎样才能让这个脚本在 WordPress 上运行?

    我有这个脚本 document ready function text1 click function this hide 代码html div class div1 p class text1 text to appear when th
  • UTF-8、PHP、Win7 - 现在是否有解决方案可以使用 php 在 Win 7 上保存 UTF-8 文件名?

    更新 只是为了不让您阅读所有内容 PHP 开头 7 1 0alpha2 在 Windows 上支持 UTF 8 文件名 感谢阿纳托尔 贝尔斯基 根据 stackoverflow 上的一些链接 我找到了部分答案 https stackover
  • 监听文件夹和文件(更改)

    可以直接在 PHP 或 Node 上监听文件夹和文件的更改 通过事件 还是我需要创建自己的方法来执行此操作 Example 我需要听文件夹 user 如果我将一些文件添加到该目录中 PHP 或 Node 会收到信息并运行PathEvent
  • 合并 url 中的 2 个输入值

    我有这样的形式
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 在Oracle中使用IW和MM

    我使用 IW 表示每周结果 使用 MM 表示每月结果 但我总是收到错误 ORA 00979 not a GROUP BY expression 00979 00000 not a GROUP BY expression 我的疑问是这些 We

随机推荐

  • Symfony 5.1.3 清除缓存时出现问题:尝试从命名空间加载类“MappingDriverChain”

    我已将 symfony 应用程序更新为5 1 3 但从那时起 在清除缓存时出现了类丢失异常 In App KernelDevDebugContainer php line 1050 Attempted to load class Mappi
  • 阻止 PostgreSQL 将值拆分为多行?

    我正在使用以下命令将二进制数据 bytea 数据类型转换为字符串encode foo bytea base64 但输出被分成多行 RECORD 1 req id 132675 b string d4IF4jCCBd4GCSqGSIb3DQE
  • “请求的模块'不提供名为'default'的导出”错误,但仅在相对导入中

    我从外部有这个 api 模块 当它作为 node module 安装时 使用 npm install 然后执行如下导入即可 import MyAPI from api 但是 当我查看 node modules 中的 api 文件夹并取出 a
  • 如何使用 Python 解码内存中的 JPEG XR 文件

    我正在使用 Python 3 处理显微镜生成的文件 该文件本质上是数千张 Jpeg XR 压缩图像的集合 我需要将它们全部读入内存 现在我正在以二进制模式读取数据 将它们保存在 jxr 文件中 并调用 JxrDecApp exe 将其转换为
  • 在生成的实体框架类上实现 INotifyPropertyChanged

    我有一个 SQL 数据库 并且正在实现一个 WPF UI 来更新它 如果我使用 EF5 从数据库生成类 如何在生成的类和属性上实现 INotifyPropertyChanged 以便我可以轻松地使用 UI 绑定到它们 有没有一种简单的方法可
  • Android布局设计原则[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直在研究针对不同屏幕尺寸 屏幕密度和方向设计布局的最佳方法 但我越来越困惑 1 设计密度与屏幕尺寸我读过这个link https stack
  • Android MediaPlayer 重置冻结 UI

    我的安卓系统有问题MediaPlayer当改变dataSource玩家的 根据规范MediaPlayer http developer android com reference android media MediaPlayer html
  • 哪些 PHP 框架不使用前端控制器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# WebBrowser 控件不应用 css

    我有一个项目 正在使用 VS2005 进行 我添加了一个 WebBrowser 控件 我向控件添加一个基本的空页面 private const string basicHtmlForm
  • 我是否需要对用户提交的数据使用stripslashes?

    人们使用 stripslashes 做什么 它通常与 addslashes 一起使用吗 为什么要在用户提交的字符串中删除或添加斜杠 你应该always清理用户的输入 但不与addslashes 如果您想用用户的输入组成查询 请使用正确的数据
  • For 循环在 makefile 中不起作用:“此时我出乎意料”

    我有一个非常简单的 makefile all for i in 1 2 3 do echo i i done 然而 当我运行这个时 我收到了 我此时出乎意料 的错误 知道为什么会这样吗 我运行的是Windows XP 上述脚本在 Windo
  • D3.js:如何从图形的刷区域中选择数据?

    I have the following graph where mouse brush light blue area is used to select the data 如何获取所选区域的数据 我尝试过的以下解决方案和许多其他解决方案
  • 如何在 context.write(k,v) 中输出值

    在我的mapreduce 工作中 我只想输出一些行 但如果我这样编码 上下文 write 数据 空 程序将抛出java lang NullPointerException 我不想像下面这样编写代码 context write 数据 new
  • 要列出的 Haskell 字符串[重复]

    这个问题在这里已经有答案了 可能的重复 在haskell中将字符串列表转换为int列表 https stackoverflow com questions 919937 convert string list to int list in
  • 调试 iPhone 崩溃报告

    如何调试以下崩溃报告 用户从 App Store 安装该应用程序 但该应用程序在加载时崩溃 我自己无法重现崩溃 我在自己的 iPad 上查看了崩溃报告 发现了类似的报告 但同样无法重现 对于用户来说 问题在于它会阻止应用程序加载 而我发现自
  • 将现有访问令牌迁移到 Facebook iOS SDK 3.0

    我刚刚彻底修改了我的代码库以使用新的 facebook ios sdk 3 0 来自之前的版本 2 x 或其他版本 一切都很顺利 直到我意识到我没有考虑到已经授予应用程序权限 使用 SDK 的先前实现登录的用户 因此 我尝试检查 acces
  • 将 10 转换为字节,结果很奇怪

    i 11 print i to bytes 1 big b x0b i 10 print i to bytes 1 big b n 应该是b x0a 为什么我得到了 b n 好吧 正如凯尔伍德在他的评论中也解释的那样 大约在同一时间 事情是
  • 除非我指定高度,否则绘图图在 Jupyter Lab 中会折叠

    当我尝试绘制 Plotly 图表时 高度设置为接近 0 或其他值 因为图表呈现折叠状态 我所看到的 但是 如果我手动设置图形的高度 它就会正确呈现 如何在不手动设置高度的情况下正确渲染图表 重现折叠图的代码 import plotly io
  • 通过代理连接发送带有标头的 aiohttp post 请求

    我现在拥有的 Python 3 4 r yield from aiohttp request post URL params None data values headers headers 里面有什么文档 http aiohttp rea
  • laravel 在 groupBy 之后使用 count/sum 方法

    当我使用count or sum方法 我得到了错误的结果 例如 Member groupBy id gt count 我用另一种方法只得到结果1 Member count 我得到了正确的结果 使用时得到错误的结果sum method htt