Yii2 如何将 SUM SQL 函数转换为查询生成器?

2024-02-26

我有这个简单的 SQL 查询:

SELECT product_name, SUM (product_amount) 
FROM orders
GROUP BY product_name;

它将显示一个包含产品名称及其数量的列表。就像这个例子:

我想将其转换为 Yii2 查询生成器。我不知道如何使用SUM功能。我尝试了这个但没有成功:

Orders::find()
    ->select(
        [
            Orders::tableName() . ".product_name",
            (new \yii\db\Query())->sum(Orders::tableName() . ".product_amount")
        ]
    )
    ->groupBy(
        [
            Orders::tableName() . '.product_name',
            Orders::tableName() . '.product_amount'
        ]
    );

你需要使用yii\db\Expression https://www.yiiframework.com/doc/api/2.0/yii-db-expression#%24expression-detail当您尝试调用 SQL 时选择SUM()功能和你需要not选择时引用该函数。

表达式代表一个数据库表达式 不需要转义或引用。表达式对象主要用于将原始 SQL 表达式传递给以下方法:yii\db\Query, yii\db\ActiveQuery及相关课程。

将您的代码更改为

Orders::find()
    ->select(['product_name', new \yii\db\Expression('SUM(product_amount)')])
    ->groupBy('product_name,product_amount')
    ->all();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii2 如何将 SUM SQL 函数转换为查询生成器? 的相关文章

  • 如何在SQL中编写连接查询[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 问题 给定 Employee 和 AnnualReviews 表 编写一个查询以返回所有从未接受过按 HireDate 排序的评论的员
  • 使用连接字段的 SQL JOIN

    我有两个表 Table1 包含一列 该列构成 Table2 中列的部分值 例如 表1 XName 123456 表2 ZName ABC 123456 我需要创建一个与这些匹配的 JOIN 但是使用 MS SQL 2008 我在完成这项工作
  • Yii 2.0 AJAX 请求的 CSRF 验证

    我有一个ajax触发从我的数据库中删除条目的函数 我需要去做CSRF验证相同 我怎样才能做到这一点 我正在发送CSRF cookie连同我的帖子请求 但是Yii 2 0不验证它 并且通过 ajax 传递的任何输入都会到达服务器 我该怎么做C
  • 跨数据库管理系统检查字符串是否为数字的方法

    好的 我有这个字段 code varchar 255 它包含我们导出例程中使用的一些值 例如 DB84 DB34 3567 3568 我需要仅选择自动生成的 全数字 字段 WHERE is numeric table code is num
  • Oracle 奇怪的 SUM 行为

    我有两个查询 据我了解 这两个查询应该提供相同的结果 但事实并非如此 显然我在这里遗漏了一些重要的观点 我希望你能帮助我 查询 我认为这是错误的 SELECT SUM a amount AS A SUM 10 727 470 FROM bi
  • 将 mysql 查询输出存储到 shell 变量中

    我需要一个变量来保存从数据库检索的结果 到目前为止 这基本上是我正在尝试但没有成功的事情 myvariable mysql database u user p password SELECT A B C FROM table a 正如你所看
  • Oracle SQL 查询日期格式

    我总是对 ORACLE SQL 查询中的日期格式感到困惑 并花几分钟时间去谷歌 有人可以向我解释当数据库表中有不同格式的日期时解决问题的最简单方法吗 例如 我有一个日期列为 ES DATE 保存的数据为 27 APR 12 11 52 48
  • 会员提供商使用还是不使用?

    我正在开发一个使用 Facebook 的网站 现在为了管理用户我想使用MembershipProvider并选择开发一个定制的会员提供商 我的问题是我的数据库架构与标准成员资格架构不匹配 并且提供的用于覆盖的函数采用与我预期不同的参数 例如
  • 仅选择 SQL 关系中的最大值?

    我有以下两个关系 Game id name year Devs pid gid role 其中 Game id 是主键 Devs gid 是 Game id 的外键 我想编写一个 SQL 查询来查找参与该游戏的人数最多的游戏 我写了以下查询
  • 如何为不存在的值创建一行并用 0 值填充计数?

    在 SQL Server 中 我对数据上的用户年龄组运行查询 其中 在某些年里 每个年龄组的用户数为零 例如 2013 年有 18 21 年龄组的用户 因此查询返回下一个年龄组 22 25 作为第一行 因为没有包含 18 21 的条目 相反
  • WP_Query 相同的请求,不同的语法 - 其中之一不起作用

    我有一个运行良好的 WP Query args array post type gt product meta key gt product subtype meta value gt public compare gt 但当我想搜索多个m
  • 在 Android 版 ORMLite 中加入类会引发 SQL 异常:找不到外部类,反之亦然

    我正在尝试使用 QueryBuilder 为两个不同的类创建一个联接查询 一个Product类和一个Coupon类 引用 Product 属性 storeId public class Coupon DatabaseField column
  • 错误:没有名为 psycopg2.extensions 的模块

    我正在尝试为我的 django 项目设置一个 PostgreSQL 数据库 由于对上一个问题的答复 我相信我现在已经完成了为 django 项目设置 postgreSQL 数据库时出现问题 https stackoverflow com q
  • 查找具有唯一两列组合的所有行

    我有这张桌子messages sender id recipient id 1 2 1 3 1 3 2 1 3 1 2 3 我希望选择这样的行 Either sender id or receiver id current user id
  • 使用临时表替换 WHERE IN 子句

    我让用户输入我需要在表中查询的值列表 该列表可能非常大 并且长度在编译时未知 而不是使用WHERE IN 我认为使用临时表并对其执行联接会更有效 我在另一个SO问题中读到了这个建议 目前找不到它 但会在找到时进行编辑 要点是这样的 CREA
  • 查明用户是否有权在 PostgreSQL 中选择/更新/...表/函数/...

    确定用户是否对 PostgreSQL 中的某个类 例如表或函数 拥有特定权限 例如选择或执行 的推荐方法是什么 此刻我得到了类似的东西 aclcontains someColumnWithAclitemArray makeaclitem u
  • PostgreSQL 中 JSON 数据类型的大小限制

    有谁知道 PostgreSQL 9 2 中 JSON 数据类型的大小限制是多少 查看 PostgreSQL 9 2 1 的源代码 Source postgresql 9 2 1 src backend utils adt json c In
  • 如何防止用户生成的 Sql 查询上的 Sql 注入

    我有一个项目 私有的 ASP net 网站 受 https 密码保护 其中要求之一是用户能够输入直接查询数据库的 Sql 查询 我需要能够允许这些查询 同时防止它们对数据库本身造成损坏 以及访问或更新它们不应该访问 更新的数据 我制定了以下
  • 在旧版本的 MySQL (<5.5.0) 中模拟 TO_SECONDS()

    出于性能和简单性的原因 我想以秒的形式获取 MySQL 3 x 服务器中 DATETIME 列的内容 或者实际上任何数字类型 我只是想在使用 UNIX TIMESTAMP 时避免所有明显的时区问题 the我表中的日期确实来自不同的区域设置
  • 连接到 Docker Postgres 容器连接超时

    所以我所做的是 docker run d e POSTGRES USER user e POSTGRES PASSWORD 456789 name admin service p 5432 5432 postgres 当我检查时docker

随机推荐

  • HttpClient.execute 抛出 OutOfMemoryError

    我有一个 Android 应用程序可以发布JSONObject作为一个实体 使用ByteArrayEntity目的 这是它的样子 post setEntity new ByteArrayEntity entity getBytes UTF
  • 多线程排序算法

    我必须在 Java 中为我的算法类实现多线程合并排序和快速排序 并将它们与我的单线程版本进行比较 不过 我以前从未使用过多线程 我的代码可以是多线程的还是必须重新开始 这是我的单线程算法代码 归并排序 sort 方法是我必须实现的策略模式的
  • 如何在 R 中绘制多个堆叠直方图?

    我对 R 非常陌生 今天才开始使用它 我试图在彼此之上绘制多个直方图 我遇到过一些关于如何在彼此之上绘制两个直方图的帖子 但没有找到任何解释如何执行多个直方图的帖子 具体来说 对于我的示例 5 我想绘制 5 个值的堆积直方图 a lt c
  • 使用 Javascript 函数启动下载

    我有多个网址供用户下载 下载应该在他们点击 赞 或发布 推文 后触发 我已经成功地为两者设置了回调函数 我想知道如何使用 Javascript 以便同时触发多个下载 一种解决方案是使用window location 但这只会触发单个下载 我
  • Tkinter:为什么 lambda 函数允许我在命令参数中使用参数?

    我想了解下面发生了什么 我明白我们不能使用arg当我调用该函数时command因为这意味着此时正在执行的函数 但我不明白lambda part 考虑这段代码 command lambda x x 2 它本质上做的是同样的事情 def som
  • Python ConfigParser,键中带有冒号

    如何在 python configparser 中的值中添加分号 https stackoverflow com questions 4298073 how do i put a semicolon in a value in python
  • 响应式设计像素与百分比

    我希望有人能提供帮助 我最近在一个知名网站上观看了有关响应式网页设计的视频 我对导师采取的方法感到困惑 他基本上创建了三个样式表 大 中 小 在每个样式表中 他给出了 DIVS 的 PX 宽度 并在必要时交换图像 当然 这种方法是有缺陷的
  • 尝试使用 Jersey 创建 Restful WebService 时出错

    我正在关注this http www vogella com articles REST article html first创建 CRUD RESTful WebService 的教程 这种类型的 WebService 的教程从第 7 段
  • 找不到 css 文件 - ASP.NET Core Web 应用程序

    我已经创建了一个 asp net core Web 应用程序 我从 空 选项开始 并且正在逐步构建它 看来我的 css 文件没有被读取或找到 当我启动应用程序时 我可以看到我的 html 页面看起来不正常 当我在控制台下的 Edge 中使用
  • Rails 使用哪些测试框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Rails 使用哪些单元测试框架 我正在阅读这本书 Pragmatic Programmers Agile Dev with Rails 它展示
  • 在 Rails 中启用自定义格式化程序

    我为 Rails 编写了一个自定义格式化程序 module Logging class GeneralFormatter lt Logger Formatter def call severity time program name mes
  • DialogFragment - 设置初始值并在旋转后保留状态

    我创建了一个对话框片段正在建设和回归警报对话框 from 创建对话框时方法 AlertDialog 包含两个 EditText 视图 我正在设置这两个编辑文本的初始值创建对话框时该方法非常有效 直到我旋转手机并且所有更改都会丢失 恢复为初始
  • Mongodb findOneAndUpdate 函数正在插入新文档

    每当我进行更新 api 调用时 我只需要更新 serviceActiveFlag 状态 更新 api 调用后 我可以看到创建了一个带有空车辆数组的新文档 如下所示 id 59c76073c11d3929148f500f vehicle Ar
  • 应用过滤器时,宽数据表导致scrollx向后滚动

    我能够在我闪亮的应用程序中渲染数据表 但是 只要有宽表 当您对后面的列应用过滤器时 水平滚动条就会回到其初始位置 仅数字列会出现此问题 我想知道是否有一种方法可以禁用基于范围的过滤器 但保留过滤器本身 或者是否有任何其他解决方法可以解决此问
  • Oracle INSERT ALL with SELECT 给出无效规范错误

    我想使用 INSERT ALL 语句将 2 行插入 2 个不同的表中 但如果我想自己插入值 下面的查询就可以正常工作 insert all into REGIONS values 5 Africa into JOBS values ZZZZ
  • Bootstrap-datetimepicker - 动态添加显示在错误的区域

    所以通过ajax写入DB之后 我的成功函数 构建一个元素并将其附加到表中 然后 将其附加到表后 它会在新附加的行上调用日期时间选择器 然而 日期时间选择器 日历 显示在完全奇怪的地方 请参阅屏幕截图 我应该提到的一件事是这些注释位于选项卡窗
  • Pandas - 替换列值

    我知道这个问题有很多主题 但没有一种方法对我有用 所以我发布了我的具体情况 我有一个如下所示的数据框 data pd DataFrame 1 0 0 1 1 0 0 1 columns sex split data sex replace
  • 将linux的.so文件转换为windows的.dll文件

    我有一些 C 代码 具有各种头文件和 make 文件 编译为 soLinux Ubuntu 中的文件和python使用以下方式调用此共享对象的函数的程序Ctypes 现在 我想在 Windows 上使用这个程序 在窗户里 Ctypes需要一
  • 在 WPF 中的组合框顶部有一个可单击的按钮

    我可以在组合框的下拉列表中显示一个按钮并可单击 但无法让选定的组合框项目 下拉列表已关闭 使该按钮可单击 它总是跳过按钮单击并仅打开下拉列表 我基本上希望我设置的 Button Click 事件处理程序在单击后被调用 这是我的示例组合框 它
  • Yii2 如何将 SUM SQL 函数转换为查询生成器?

    我有这个简单的 SQL 查询 SELECT product name SUM product amount FROM orders GROUP BY product name 它将显示一个包含产品名称及其数量的列表 就像这个例子 我想将其转