如何获取 Laravel5 上的 SUM 数组?

How Can I Get SUM Array On Laravel5?

我的 postgresql 数据库是这样的。

SELECT * FROM point_records;

 id | user_id | point |     created_at      |     updated_at
----+---------+-------+---------------------+---------------------
  1 |       1 |   100 | 2017-01-27 09:39:47 | 2017-01-27 09:39:47
  3 |       2 |   100 |                     |
  4 |       2 |   100 |                     |
  5 |       3 |   100 |                     |
  6 |       3 |   100 |                     |
  7 |       3 |   100 |                     |

SELECT user_id, SUM(point) AS points FROM point_records GROUP BY(user_id) ORDER BY points desc;

 user_id | points
---------+--------
       3 |    300
       2 |    200
       1 |    100

我想获得数组的积分排名。所以现在我这样做了。

$points = \App\PointRecord::selectRaw('member_id, SUM(point) AS points') -> groupBy('member_id') -> orderBy('points', 'desc') -> get() -> toArray();

$your_score = array_search($user -> id, $points) + 1;

这个 $points 数组 return 这个。

Array ( [0] => Array ( [user_id] => 3 [points] => 150 ) [1] => Array ( [user_id] => 2 [points] => 100 ) [2] => Array ( [user_id] => 1 [points] => 10 ) )

但我不想使用 Raw。我正在寻找其他想法。

有人知道吗?

我认为您的解决方案已经奏效,为什么您要将 raw 更改为另一种。 无论如何,如果你真的想改变你需要添加更多代码试试这个

    $outputs = [];
    $query = \App\PointRecord:::groupBy('member_id')->get();
    foreach ($query as $e) {
        $data = $e->toArray();
        $data['point'] = $e->where('member_id', $data["member_id"])->sum('point');
        $outputs[] = $data;
    }
    dd($outputs);