0
このような私のpostgresqlデータベース。Laravel5でSUMアレイを取得するにはどうすればよいですか?
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配列はこれを返します。
しかし、私はRawを使用したくありません。私は他のアイデアを探しています。
誰でも知っていますか?
うーん...合計(ポイント)戻り値の整数を試してみてください、しかし、GROUPBYはその上で呼び出すことはできません。しかし、私は知りませんaddSelectあなたに感謝します。 – qwe001
お返事ありがとうございます。うわー、複雑に聞こえます。なぜ私は生のままに変更したいのですか?いつかPostgresからMySQLにDBを変更すると作業が止まるのを恐れています。SQLインジェクションの危険がある生の原因。だから私はできるだけrawを使いたくない – qwe001