我有以下疑问:
$top_cont = DB::table('quests')
->whereBetween('created_at', [Carbon::now()->startOfDay(), Carbon::now()->endOfDay()])
->take(5)
->get();
quests
表有一个user_id
列。我正在尝试获得贡献最大的前5名(即今天任务表中的行数最多)。如何调整查询以使出现次数最多的
user_id
s出现?如果有人能在原始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,
},
],
}
关于php - 在Laravel中带来某个字段最多出现的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58568356/