簡體   English   中英

Laravel中某個字段出現次數最多的查詢

[英]Query that brings the most occurrences of a certain field in Laravel

我有以下查詢:

$top_cont = DB::table('quests') 
       ->whereBetween('created_at', [Carbon::now()->startOfDay(), Carbon::now()->endOfDay()])  
       ->take(5)
       ->get(); 

quests表有一個user_id列。 我試圖獲得貢獻最多的前 5 個user_id (即今天在 quests 表中的行數最多)。

如何調整查詢以獲取出現次數最多的user_id

如果有人可以在原始 sql 中做到這一點,這也會有所幫助。

你可以這樣做:

$top_cont = DB::table('quests') 
    ->select('user_id', DB::raw('count(*) as contributions'))
    ->whereDate('created_at', '>=', now()->startOfDay()) 
    ->take(5)
    ->groupBy('user_id')
    ->orderBy('contributions', 'desc')
    ->get(); 

這應該為您提供 5 條使用此表單的記錄:

dd($top_cont);
 => Illuminate\Support\Collection {#3403 all: [ {#256 user_id: 2, contributions: 51, }, {#3417 user_id: 975, contributions: 50, }, {#3418 user_id: 743, contributions: 46, }, {#3419 user_id: 538, contributions: 45, }, {#3420 user_id: 435, contributions: 18, }, ], }

您可以使用以下查詢:

    DB::table('quests') 
       ->whereBetween('created_at', [ Carbon::now()->startOfDay(),Carbon::now()->endOfDay()])
        ->select('user_id', DB::raw('count(*) as count') )
        ->groupBy('user_id')
        ->limit(5)
        ->orderBy ( 'count  DESC')
        ->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM