【问题标题】:How to sum using YII2 relation hasMany?如何使用 YII2 关系 hasMany 求和?
【发布时间】:2015-10-10 14:40:05
【问题描述】:

我正在使用 Yii2,我有两个表:

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

如何通过过滤、按总和 DESC 和关系排序来汇总网格视图中每个用户的所有点?

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

【问题讨论】:

  • 不要那样做,最好给你的用户添加一个点counter 列。

标签: mysql yii2


【解决方案1】:

在你的 User 模型中,你应该有这个 getter

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
    ...
}

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

【讨论】:

  • @user5431131 这个答案有帮助吗?
【解决方案2】:

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

【讨论】:

  • 这个答案应该是评论。
猜你喜欢
  • 2019-02-26
  • 2015-08-10
  • 2015-07-14
  • 1970-01-01
  • 2021-12-14
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多