我如何 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 中”。这意味着您必须对该列进行分组。显示该错误的每一列,将其添加到分组依据中。
我真的很困惑 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 中”。这意味着您必须对该列进行分组。显示该错误的每一列,将其添加到分组依据中。