代码之家  ›  专栏  ›  技术社区  ›  user5996816

使用Laravel查询选择和求和多个列以进行统计

  •  0
  • user5996816  · 技术社区  · 7 年前

    我有一张桌子 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`
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Yashvantsinh Zala    7 年前

    你可以用这样的东西

    $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)
    }