2017-03-08 47 views
0

我真的很迷惑,在雄辩的是,用于选择流行的线程时流行的参数是选择表的线程次序存在的差异表,所以我的表看起来像波纹管:我怎么能由流行线程laravel

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

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

所以与上表,我想显示所有线程使用雄辩laravel大多数评论线程。 我花了很多时间在这种情况下,但没有得到解决。

回答

1

尝试

$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”相关的错误。这意味着你必须对该栏进行分组。显示该错误的每一列都将其添加到组中。

+0

它仍然显示错误, '语法错误或访问冲突:1055'thread.id'不在GROUP BY中。 很多查询,我尝试,总是显示这样。 Iam卡在这里 –

+0

你没注意我旁边的评论。我为你更新了代码。我警告你可能会看到这些错误。只需将列添加到groupBy中,以逗号分隔'groupBy('column1','column2')' – EddyTheDove

+0

哦,我很抱歉没有注意到警告。终于解决了,非常感谢你先生。 –