我有包含 article_id 字段的表评论、投票、 View 和喜欢。我试图从这些表中获取前 5 篇文章,根据它们中出现的次数。我将 $modelName
发送到我的函数,然后尝试从查询中获取结果。这就是我的查询现在的样子:
private function query($modelName) {
$mostSomethingArticle = $modelName->all()->groupBy('article_id')->take(5);
return $mostSomethingArticle;
}
现在,我得到了这样的结果:
Collection {#398 ▼
#items: array:5 [▼
5 => Collection {#377 ▼
#items: array:5 [▶]
}
2 => Collection {#376 ▼
#items: array:1 [▶]
}
6 => Collection {#397 ▼
#items: array:3 [▶]
}
1 => Collection {#396 ▼
#items: array:1 [▶]
}
7 => Collection {#395 ▼
#items: array:5 [▶]
}
]
}
我想知道如何进行查询,以
'desc'
顺序获得前 5 个结果。 最佳答案
如果将来有人需要它,我将发布我的解决方法,而不是传递 $modelName
,我决定从 $request 获取表的名称,然后执行如下查询:
$result = DB::table($request['option'])
->select(DB::raw('article_id'), DB::raw('count(*) as count'))
->groupBy('article_id')
->orderBy('count', 'desc')
->take(5)
->get();
关于php - Laravel - 按出现次数获得前 5 名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37407670/