我正在使用Yii2,我有两张桌子:
user (id)
answer_points (id, user_id, value)
如何在网格视图中对每个用户的所有点进行求和,并用DESC和关系进行排序?
return $this->hasMany(\frontend\models\Points::className(),
['user_id' => 'id'])->sum('value');
答案 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。