我有表评论,投票,观点,喜欢有article_id字段。我试图通过它们中出现的次数从这些表中获得前5篇文章。我正在向我的函数发送HTTPS
,然后尝试从查询中获取结果。这就是我的查询现在的样子:
$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 [▶]
}
]
}
顺序获得出现次数的前5个结果。
答案 0 :(得分:2)
我发布我的解决方法,如果有人将来需要它,而不是传递$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();
答案 1 :(得分:1)
不确定这是不是您的意思,但是如果您有一个包含import db
bad_words = db.get_bad_words()
的列,您可以先按此列排序,然后获得结果:
occurrences
另请尝试:
$modelName->all()->groupBy('article_id')->sortByDesc('occurrences')->take(5);
希望这有帮助。