我有一个表格,用于存储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;
}
答案 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组中求和(点)