我有这个简单的 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
在选择时尝试调用 SQL SUM()
函数,并且您需要不在选择时引用该函数。
Expression represents a DB expression that does not need escaping or quoting. Expression objects are mainly created for passing raw SQL expressions to methods of
yii\db\Query
,yii\db\ActiveQuery
and related classes.
将您的代码更改为
Orders::find()
->select(['product_name', new \yii\db\Expression('SUM(product_amount)')])
->groupBy('product_name,product_amount')
->all();
关于sql - Yii2 如何将 SUM SQL 函数转换为查询生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53083764/