tp5如何链式操作追加where过滤或order排序条件?

浏览:3465 发布日期:2017/12/19 分类:ThinkPHP5专区
实现目标:通过url参数进行动态的获取对应的内容;
比如参数中有sort排序参数,flag标示过滤条件等等;

封装并验证sort参数的有效性,并追加order排序条件;
封装并验证flag的有效性,并追加where过滤条件。

以下是模型中部分代码。但是追加报错,能力有限,还望高人指点;//通过过滤条件查询当前版块的帖子,不同方式排序,不同类型帖子
    //sort排序,flag帖子类型,page页码
    //是否开启分页
    //当前页数
    //每页显示条数
    public static function getForumPostsWithFilter($id, $sort = 'default', $flag = 'default', $size = 30)
    {
        return self::where(['id' => $id, 'status' => self::STATUS_ACTIVE])
                ->applySort($sort) //追加排序条件
                ->select();

    }

    //动态追加排序条件
    public function applySort($sort)
    {
        switch ($sort) {
            case 'recent':
                return $this->sortRecent();
                break;
            default:
                return $this->sortActive(); //最后回复排序
                break;
        }
    }

    //最新帖子排序
    protected function sortRecent()
    {
        return $this->order('created_at', 'desc');
    }

    //最后回复排序
    protected function sortActive()
    {
        return $this->order('updated_at', 'desc');
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>