$View = D('UserView');
$View->where($map)->order($order)->select();
当order传入数组的时候会出现错误。
以前用2.0的时候我本身修正了,也反应给官方了,如今用3.0这个错误还在。
PS: 其实这样的问题在里面还有不少,可能流年也是力不从心了。改进,修复,产生新bug, 原有bug死灰复燃。
再次向官方反馈一下。
修正方法以下:
ViewModel.class.php
protected function checkOrder($order='') {
if(!is_array($order) && $order) { //修改此行
$orders = explode(',',$order);
$_order = array();
foreach ($orders as $order){
$array = explode(' ',$order);
$field = $array[0];
$sort = isset($array[1])?$array[1]:'ASC';
// 解析成视图字段
foreach ($this->viewFields as $name=>$val){
$k = isset($val['_as'])?$val['_as']:$name;
$val = $this->_checkFields($name,$val);
if(false !== $_field = array_search($field,$val,true)) {
// 存在视图字段
$field = is_numeric($_field)?$k.'.'.$field:$k.'.'.$_field;
break;
}
}
$_order[] = $field.' '.$sort;
}
$order = implode(',',$_order);
}
return $order;
}