修復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;
    }
相關文章
相關標籤/搜索