Yii2如何将SUM SQL函数转换为查询生成器? [英] Yii2 How to translate SUM SQL function to Query Builder?

查看:387
本文介绍了Yii2如何将SUM SQL函数转换为查询生成器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的SQL查询:

I have this simple SQL query:

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

它将显示带有产品名称及其数量的列表。像这个例子:

It will show a list with product names and their amounts. Like this example:

我要翻译它到Yii2查询生成器。我不知道如何使用 SUM 函数。我试过了,但是没用:

I want to translate it to Yii2 Query Builder. I don't know how to use the SUM function. I tried this but it didn't work:

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()函数时进行选择,并且在选择时需要 not 引用该函数

You need to use yii\db\Expression while selecting as you are trying to call the SQL SUM() function and you need not to quote the function while selecting.


Expression表示DB表达式不需要
进行转义或引用。表达式对象主要用于将原始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();

这篇关于Yii2如何将SUM SQL函数转换为查询生成器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆