如何总结使用YII2关系hasMany?

时间:2015-10-10 14:40:05

标签: mysql yii2

我正在使用Yii2,我有两张桌子:

user (id)
answer_points (id, user_id, value)

如何在网格视图中对每个用户的所有点进行求和,并用DESC和关系进行排序?

return $this->hasMany(\frontend\models\Points::className(), 
       ['user_id' => 'id'])->sum('value');

2 个答案:

答案 0 :(得分:1)

User模型中,你应该有这个吸气剂

public function getPoints()
{
    return $this->hasMany(\frontend\models\Points::className(), ['user_id' => 'id'])->sum('value');
}

UserSearch模型中,您可以执行

public function search(...) {
    $query = User::find()->joinWith('points'); //<--- alias to the getter defined above
    ...
}

现在您应该能够添加该列以在您的排序和过滤器中使用该列。

答案 1 :(得分:0)

您可以创建自定义dataProvider并在GridView中使用 和自定义SearchModel。