我有这个简单的 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(使用前将#替换为@)