我是一名设计师,试图在这里学习编码,而 Laravel 非常棒,它使像我这样的设计能够创造出自己微笑的东西
关于我的问题,我遵循了一些教程,现在我学习构建简单的博客系统。$this->morphMany('Like','likeable','likeable_type');
所以我有与 Like 模型有关系的 Post模型。到目前为止一切都很好。现在我希望能够创建“热门帖子”页面,该页面基本上显示按受欢迎程度排序的帖子,在我的例子中,这是喜欢的数量。
“喜欢”表有这些字段id | likable_id | likeable_type
- 在这种情况下,“likeable_type”是“发布”
- '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”方法?
对此有何建议?
附言。对不起我的英语不好