/** * jqgrid显示所有结果 * @param dao $dao 当前使用的dao * @param array $options * @param int $page 当前页面 * @param int $rows 每页显示数目 * @param array $options 扩展配置项 <p> string sidx 排序域名</p> <p> string sord 排序方式</p> <p> boolean search 是否为搜索</p> <p> array filters 多条件搜索条件数据</p> <p> string searchField 多条件搜索域</p> <p> string searchString 多条件搜索值</p> <p> string searchOper 多条件搜索操作符</p> <p> string fields 搜索的域</p> <p> string order 搜索时默认的排序方式</p> <p> string where 搜索时默认的排序条件</p> <p> boolean returnJson 是否返回json格式数组,默认为true</p> <p> boolean needWhere 是否一定要有设置的where条件,为true时 where不能为空</p> * @return json|array 默认返回json数据 */ private function jqgrid_show_results($dao, $page, $rows, $options) { //排序方式 if (isset($options['sidx']) && isset($options['sord'])) { $order = $options['sidx'] . ' ' . $options['sord']; } else { $order = ''; } if (!empty($options['where'])) { $conditions = $options['where']; } //表示是查找功能,会重置查询条件 if ($options['search']) { //多条件查询 $multipleSearch = stripcslashes($options['filters']); //多值查询 if (!empty($multipleSearch)) { //条件转化为数组格式 $multipleSearch = json_decode($multipleSearch, true); $conditions = $this->multiple_earch_condition($multipleSearch); } else { if ($options['searchOper']) { //获得单个查询的条件 $conditions = $this->get_search_string($options['searchField'], $options['searchString'], $options['searchOper']); } } } if ($options['needWhere'] == true && !empty($options['where'])) { $conditions = array_merge($conditions, $options['where']); } $modelOptions = array(); if (!empty($options['joins'])) { $modelOptions['joins'] = $options['joins']; } //查询条件 if (!empty($conditions)) { $modelOptions['conditions'] = $conditions; } //获得总记录条数 $counts = $dao->find('count', $modelOptions); if ($counts > 0) { //排序方式 $modelOptions['order'] = $order; //查询字段 if (isset($options['fields'])) { $modelOptions['fields'] = $options['fields']; } //获得查询结果 $modelOptions['limit'] = $rows; $modelOptions['offset'] = ($page - 1) * $rows; $results = $dao->find('all', $modelOptions); } else { $results = array(); } $total = ceil($counts / $rows); //去除表名,使用别名形式 $results = $this->del_tablename($results); $json['page'] = $page; $json['records'] = $counts; $json['total'] = $total; $json['results'] = $results; //获得执行的sql //print_r($dao->getDataSource()->getLog(false,false)); //默认返回json数据 if (!isset($options['returnJson']) || $options['returnJson']) { return $this->json_key_result($json); } return $json; }