我如何 select table 按 laravel 中的流行线程排序

How can i select table thread order by popular thread in laravel

我真的很困惑 eloquent 当流行参数存在于差异 table 时用于选择流行线程,所以我的 table 如下所示:

-------------------
|    thread        |
-------------------
|id (int)          |
|title (varchar)   |
|value (text)      |
|timestamp         |
-------------------

 -------------------
|    comment       |
-------------------
|id (int)          |
|value (text)      |
|id_thread (id)    |
|timestamp         |
-------------------

所以对于上面的 table,我想显示所有使用 eloquent laravel 评论最多的线程。 我在这种情况下花了很多时间,但没有得到解决方案。

尝试

$tops = Thread::join('comments', 'comments.id_thread', '=', 'threads.id')
->select(
    'thread.*', 
    DB::raw('count(comments.id) as total_comments')
)->orderBy('total_comments', 'desc')
->groupBy('threads.id') // or 'id'
->take(10) //top 10 ?
->get();

您可能会遇到与 GROUPBY 相关的错误,例如“...因为它不包含在 grouby 中”。这意味着您必须对该列进行分组。显示该错误的每一列,将其添加到分组依据中。