【发布时间】:2013-11-14 14:15:18
【问题描述】:
我是一名试图在这里学习编码的设计师,而 Laravel 非常棒,它让像我这样的设计能够创造出自己微笑的东西
关于我的问题,我遵循了一些教程,现在我学习构建简单的博客系统。
所以我有 Post 模型,它与 $this->morphMany('Like','likeable','likeable_type'); 和 Like 模型有关系。
到目前为止一切都很好。现在我希望能够创建“热门帖子”页面,该页面基本上显示按受欢迎程度排序的帖子,在我的例子中是喜欢的数量。
“喜欢”表有这些字段id | likable_id | likeable_type
- 'likeable_type',在这种情况下,是'Post'
- 'likeable_id' 是链接到 'posts' 表中 id 的帖子 id
所以在我的控制器中,我尝试了这个。
$popular_ids = DB::table('likes')
->select('likeable_id')
->groupBy('likeable_id')
->orderBy(DB::raw('COUNT(likeable_id)'), 'DESC')
->get();
$popular_posts = Post::whereIn('id',array_pluck($popular_ids,'likeable_id'))->paginate(15);
这给了我所有热门帖子,但不是我想要的顺序。 我不确定是否有更好的方法来实现这一点,或者我似乎只是错过了另一个 'orderBy' 方法?
对此有何建议?
ps。对不起我的英语不好
【问题讨论】:
标签: laravel