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