当用户名相同时,我如何将列值相加 - Laravel 5.2?

时间:2017-11-01 04:55:52

标签: php mysql laravel laravel-5.2

我有一张表格,其中包含所有winners奖品的详细信息,其中username用户可以抽奖。现在,我希望在相同username时显示此列,然后它将显示总win_number。我尝试了一些方法,但无法找到我想要的正确方法。如果我使用:

$winners = Winner::where('id', '>=', 1)->paginate(1000);

然后我将检索结果显示为数据库中的获胜者表。

我的获奖者表:

enter image description here

我的输出:

enter image description here

但是想要用ex检索所有数据。如果guest用户名我希望在4旁边的每个guest名称中显示(获胜的总数为guest用户)

我尝试了另一种方式,但它的展示只有guestusername= guest

$winners = DB::table('winners')
             ->select(DB::raw('*'))
             ->where('id', '<>', 1)
             ->where('username', '=', 'guest')
             ->get();

我如何实现,来自获胜者表的所有数据,如果用户名相同,那么我想要在每个用户名旁边的总赢数。顺便说一句,我每周都在查询。提前谢谢。

3 个答案:

答案 0 :(得分:3)

您可以尝试按

分组
DB::table('winners')->groupBy('identify_number')
   ->selectRaw('*, sum(win_number) as sum')
   ->get();

答案 1 :(得分:0)

你可以像这样使用

$data = DB::table("winners")
    ->select(DB::raw("COUNT(*) as count_row"))
    ->where('id', '<>', 1)
    ->groupBy(DB::raw("username"))
    ->get();

答案 2 :(得分:0)

使用Laravel集合的sum() https://laravel.com/docs/5.5/collections#method-sum