5.8. 话题列表排序

话题排序

虽然我们已经有话题列表,不过目前只有一种排序逻辑,本章节中,我们将让话题列表支持『最后回复』和『最新发布』排序:

file

我们可以通过 URI 传参 order 给控制器,控制器根据此参数来决定数据的读取逻辑。因为『分类下的话题列表』也会用到排序,并且是在不同的控制器中,所以在此处为了复用性考虑,我们将会把排序逻辑代码放置于 Topic 数据模型中。作为一个合格的程序员,编码时需时刻注意代码复用性。

接下来的步骤是:

  • Topic 中编写排序逻辑;
  • TopicsController 控制器中调用;
  • CategoriesController 控制器中调用。

1. 编写排序逻辑

app/Models/Topic.php

.
.
.
class Topic extends Model
{
    .
    .
    .
    public function scopeWithOrder($query, $order)
    {
        // 不同的排序,使用不同的数据读取逻辑
        switch ($order) {
            case 'recent':
                $que...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
贡献者:2
讨论数量: 16

hustnzj
scopeWithOrder ($query, $order), $query 是怎么来的?
7 个点赞 | 2 个回复 | 分享 | 课程版本 5.5
bignose
总结要点:本地作用域的使用,数据排序
4 个点赞 | 3 个回复 | 分享 | 课程版本 5.5
keer
为什么从控制器调用 model 的时候 不能先调用 where 语句?
3 个点赞 | 12 个回复 | 问答 | 课程版本 5.5
焦糖大瓜子
接口请求特别慢,一个页面加载都要一两秒钟?
2 个点赞 | 7 个回复 | 问答 | 课程版本 5.5
Jhaihao
scopeWithOrder ($query, $order),$query 是什么东西来的??
2 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
Soldoros
按照「创建时间」排序为什么要自己写?
1 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
Morrow
排序
1 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
followyounger
最新发布是乱序的?
0 个点赞 | 9 个回复 | 问答 | 课程版本 5.5
Gebriel
最新和最后回复另外一种做法
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
tooyond
Topic:: 和 $topic-> 有区别么?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
景海浪
active_class 报错
0 个点赞 | 3 个回复 | 教程 | 课程版本 5.5
Soldoros
为什么要传入参数 Topic $topic ?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
panta
列表排序后,点击分页就没有排序了
0 个点赞 | 2 个回复 | 分享 | 课程版本 5.8
ajax_com
关于分类的看法
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.5