上一篇博客中说道:对于utf-8数据表,按照姓名排序使用 convert(realname using gbk) asc 方法。但是在视图查询的过程中:
$list = $modelView->where($condition)->order('convert(realname using gbk) asc')->select();
结果order by的地方变成了 ORDER BY convert(realname using
看了下ViewModel.class.php中checkOrder方法:
protected function checkOrder($order='') { if(is_string($order) && !empty($order)) { $orders = explode(',',$order); $_order = array(); foreach ($orders as $order){ <span style="color: #ff0000;"><strong> $array = explode(' ',$order);</strong></span> <span style="color: #ff0000;"><strong> $field = $array[0];</strong></span> <span style="color: #ff0000;"><strong> $sort = isset($array[1])?$array[1]:'ASC';</strong></span> // 解析成视图字段 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; }
红色的地方标明了为啥会出现这种现象。
解决办法使用数组传递:
order(array('convert(realname using gbk)'=>'asc'))
卧槽,求问哪里有卖?图中的做工看着太好了啊,而且还有比较新的宠,应该还在出吧
卧槽,求问哪里有卖?图中的做工看着太好了啊,而且还有比较新的宠,应该还在出吧