繁体   English   中英

从SQL选择总和到Yii框架2中的活动记录

[英]From SQL select sum group by to active record in Yii framework 2

以下是我的纯SQL查询。

SELECT SUM(money) AS total_money, user_id 
FROM User 
INNER JOIN Person 
        ON Person.user_id = User.user_id 
GROUP BY user_id

如何在Yii Framework 2中将此纯查询转换为ActiveRecord? 我可以解决INNER JOIN但是不知道如何使用Yii 2 ActiveRecord解决SUM包括GROUP BY

SELECT部分:

use yii\db\Expression;

...

->select([new Expression('SUM(money) as total_money'), 'user_id'])

GROUP BY部分GROUP BY

->groupBy('user_id')

select()groupBy()的文档可以在“ 查询构建器”部分中找到。

yii \\ db \\ Expression用于防止引用。

您不能在此处使用sum()方法,因为它是聚合方法并返回一个数字,而在您的情况下,您可以将其与其他列一起使用以返回一组记录。

整个查询将如下所示:

$personTable = Person::tableName();
$userTable = User::tableName();

$users = User::find()
    ->select([new Expression('SUM(money) as total_money'), 'user_id'])
    ->innerJoin($personTable, "$personTable.user_id = $userTable.user_id")
    ->groupBy('user_id')
    ->all()

还有两件事要提:

  • 最好使用tableName()方法获取实际的表名,而不是手动编写。 在这种情况下,如果您决定更改表名,则只需要在一个地方进行更改。
  • 最好用Relation代替join part。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM