Yii2 Как перевести функцию SUM SQL в Query Builder?

У меня есть этот простой SQL-запрос:

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

Он покажет список с названиями продуктов и их количеством. Как этот пример:

Yii2 Как перевести функцию SUM SQL в Query Builder?

Я хочу перевести это на Yii2 Query Builder. Я не знаю, как пользоваться функцией 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'
        ]
    );
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
269
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно использовать 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();

Другие вопросы по теме