[英]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.