在使用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; }