Php 从SQL选择sum group by到Yii framework 2中的活动记录
下面是我的纯SQL查询Php 从SQL选择sum group by到Yii framework 2中的活动记录,php,mysql,sql,yii2,Php,Mysql,Sql,Yii2,下面是我的纯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?我可以用Yii 2 ActiveRecord解决内部联接,但不知道如何解决求和包括分组方式,选择部分: use yii\db\Ex
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?我可以用Yii 2 ActiveRecord解决
内部联接
,但不知道如何解决求和
包括分组方式
,选择
部分:
use yii\db\Expression;
...
->select([new Expression('SUM(money) as total_money'), 'user_id'])
->groupBy('user_id')
分组依据
部分:
use yii\db\Expression;
...
->select([new Expression('SUM(money) as total_money'), 'user_id'])
->groupBy('user_id')
和的文档可在第节中找到
用于防止引用
这里不能使用方法,因为它是聚合方法并返回一个数字,而在本例中,您可以将它与其他列一起使用以返回一组记录
整个查询将如下所示:
$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()
- 最好将连接件更换为