ThinkPHP无法使用order对MongoDB排序

天锦 发表于 某的代码片段 分类,标签: ThinkPHPorder

在使用ThinkPHP对MongoDB进行测试时,order方法不生效的解决办法:

编辑:

/vendor/topthink/think-mongo/src/Query.php

第1369行

修改后:

    /**
     * 设置sort
     * @access public
     * @param array|string|object   $field
     * @param string                $order
     * @return $this
     */
    public function order($field, $order = '')
    {
        if (is_array($field)) {
            $this->options['sort'] = $field;
        }else if(is_string($field) && $field!="" && $order=="") {
            /*
             * @todo 修正thinkphp mongodb order 问题,现支持格式: id desc,creation_time desc
             * */
            $order = explode(",",$field);
            foreach ($order as $k){
                $tmparray =  explode(" ",$k);
                $this->options["sort"][trim($tmparray[0])] =  'asc' == strtolower(trim($tmparray[1])) ? 1 : -1;
            }
        }else {
            $this->options['sort'][$field] = 'asc' == strtolower($order) ? 1 : -1;
        }
        return $this;
    }


0 篇评论

发表我的评论