Mar*_*rco 3 php mysql eloquent laravel-5
我有表评论、投票、观点、喜欢,其中有article_id 字段。我试图根据这些表中出现的次数获取前 5 篇文章。我正在发送$modelName到我的函数,然后尝试从查询中获取结果。这就是我的查询现在的样子:
private function query($modelName) {\n $mostSomethingArticle = $modelName->all()->groupBy('article_id')->take(5);\n\n return $mostSomethingArticle;\n\n }\nRun Code Online (Sandbox Code Playgroud)\n\n现在,我得到这样的结果:
\n\nCollection {#398 \xe2\x96\xbc\n #items: array:5 [\xe2\x96\xbc\n 5 => Collection {#377 \xe2\x96\xbc\n #items: array:5 [\xe2\x96\xb6]\n }\n 2 => Collection {#376 \xe2\x96\xbc\n #items: array:1 [\xe2\x96\xb6]\n }\n 6 => Collection {#397 \xe2\x96\xbc\n #items: array:3 [\xe2\x96\xb6]\n }\n 1 => Collection {#396 \xe2\x96\xbc\n #items: array:1 [\xe2\x96\xb6]\n }\n 7 => Collection {#395 \xe2\x96\xbc\n #items: array:5 [\xe2\x96\xb6]\n }\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我想知道如何进行查询,以获取前 5 个结果以及按顺序出现的次数'desc'。
如果将来有人需要它,我将发布我的解决方法,而不是传递 a $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();
Run Code Online (Sandbox Code Playgroud)