如何获取 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);
我的 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);