2017-07-19 11 views
0

私はユーザーの保存点数が1つのテーブルscoresを持っています。これはこのように見えますLaravelクエリを使用して統計的な目的で複数の列を選択して合計します

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 

クエリは、それが唯一の結果を返すだから問題は->first()である

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

であるべきです。代わりに->get()を使用しようとすると、Undefined propertyのエラーが発生しています。これはどのように使うべきですか? `)>(取得 -

phpmyadminのに

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

のようなものを使用することができますか? –

+0

私は 'dd($ sumPoints-> numberOfPoints)'を試してみました。 – user5996816

+0

コレクションを返す 'get()'を使っているなら、 '$ sumPoints'をループしてアクセスする必要がありますプロパティ – linktoahref

答えて

1

を働いているクエリは、あなたが`追加した後に印刷するために何をしようとします。この

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

ここにはget()が複数の結果をユーザに与えるので、私は –

+0

を参照してください。これをクリアしていただきありがとうございます。 – user5996816

関連する問題