使用Laravel查询选择并汇总多个列以进行统计



我有一个表格scores我有保存用户分数的地方。看起来像这样

table `scores`
id | points | user_id
1     5          1
2     2          1
3     4          1
4     1          3
5     10         2

我想选择每个用户,对他的积分求和并显示为排名。上面的结果应该是

user_id | points
1         11
2         10
3         1

我提出的查询是

$sumPoints = Scores::select( DB::raw("sum(points) as numberOfPoints"), DB::raw("count(id) as numberId"))->groupBy("user_id")->first();

问题出在->first(),因为它只返回一个结果......它正在正常工作。如果我尝试使用->get(),我会遇到Undefined property错误。我应该如何使用它?

在phpmyadmin中工作的查询

SELECT count(id) as numberId, sum(points) as numberOfPoints FROM `points` GROUP BY `user_id`

你可以使用这样的东西

$sumPoints = Scores::select( DB::raw("sum(points) as numberOfPoints"), DB::raw("count(id) as numberId"))->groupBy("user_id")->get();
foreach($sumPoints as $point){
dd($point); //OR dd($point->numberOfPoints)
}

相关内容

  • 没有找到相关文章

最新更新