修复ThinkPHP视图模型order操做的bug

$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;
    }
相关文章
相关标签/搜索