行yii的求和值

时间:2013-10-14 10:54:13

标签: php yii

我有一个表格,用于存储userId和points。每次用户使用交易时,他们都将获得积分,这些积分将存储在UserPoints中。它将为每个事务发布新行。

id | userId |点

1 2 38

2 18 50

3 2 12

4 10 13

5 15 15

如上表所示,userID 2有多行,我想添加userId 2拥有的所有值。我想将计算MUserTotal内的计算放在变量totalPointsValue()中。

这是我到目前为止所拥有的

public function totalPointsValue() {

    user = $this->userId;

}         

2 个答案:

答案 0 :(得分:1)

您需要的是statical query

基本上,您在用户类上创建一个类型为STAT的UserPoints的关系,并指定条件:

<?php
class User extends CActiveRecord
{
    public function relations()
    {
        return array(
            'points'=>array(
                self::STAT, // Declare this relation as statical
                'user_points', // The table where you are storing the points
                'userId', // The foreign key on that table
                'select' => "SUM(points)", // make it SUM instead of default COUNT
                'group' => "userId" // Group by this field when adding points
            ),
        );
    }
}

之后,您可以像使用任何其他关系一样使用该关系:

<?php
$user = User::model()->findbyPk(1);
echo $user->points;

答案 1 :(得分:0)

或者如果您需要创建模型MUserTotal ...只需创建一个包含userId及其点总和的视图,并为此视图创建模型...查询将是一些类似的事情     选择user_id,按user_id

从user_points组中求和(点)