Php CI MSSQL连接和Paginator类出现问题
我似乎对codeigniter中的分页和搜索查询有问题 密码 如您所见,我这里有一些搜索参数。我需要将$config['total_rows']更改为$this->db->count_all_results'vwSelectUser',但是当我这样做时,我会遇到以下错误: 列vwSelectUser.UserFullName在ORDER BY子句中无效,因为它未包含在聚合函数或GROUP BY子句中 我如何解决这个问题,1这样它将显示正确的分页链接(如果有),2以获得正确的过滤返回计数Php CI MSSQL连接和Paginator类出现问题,php,sql,sql-server,codeigniter,Php,Sql,Sql Server,Codeigniter,我似乎对codeigniter中的分页和搜索查询有问题 密码 如您所见,我这里有一些搜索参数。我需要将$config['total_rows']更改为$this->db->count_all_results'vwSelectUser',但是当我这样做时,我会遇到以下错误: 列vwSelectUser.UserFullName在ORDER BY子句中无效,因为它未包含在聚合函数或GROUP BY子句中 我如何解决这个问题,1这样它将显示正确的分页链接(如果有),2以获得正确的过滤返回计数 通过这样
通过这样做,我想:$config['total_rows']=$\u POST$this->db->count_all_结果'vwSelectUser a':$this->db->count_all'vwSelectUser a';它应该可以做到这一点,但我得到了指定的错误。我猜代码中有太多的内容,我不知道您想做什么 1-运行SQL探查器跟踪以捕获实际发送到数据库引擎的内容 2-所有连接都可以在TSQL语句中正确完成。事实上,数据库中的用户定义视图可以简化PHP中的调用 3-当您按一组列进行分组,并尝试使用列表中不包含的列执行order by时,会出现错误代码 分组时,该列必须位于group by列表中,或者位于另一列上的聚合函数中 4-像任何旧式ASP代码一样,注释掉不起作用的部分。让它工作,并逐步添加回代码 简言之,没有实际的代码和数据库,我只能给你上面的指导。我认为1和2可能会简化代码,并让您了解错误所在 祝你好运,J
备注:注释掉$this->db->order_,使用'a.UserFullName','asc';看看计算是否有效。单独调用数据库可以计算出总数,并且可能不会导致此错误。但是,视图可能会清除代码。在注释掉它之后,它确实可以工作。。。事实上我找到了解决方法。如果我包装查询减去start\u cache/stop\u cache中的顺序,然后将count\u all\u结果放在后面,我会让它正常工作。
public function index($page = 0){
$this->db->select('a.UserID, a.Username, a.UserFullName, a.UserJoined,
(Select Top 1 p.phoneNumber From vwSelectUserPhone p Where p.userID = a.userID) As PhoneNumber,
(Select Top 1 e1.emailAddress From vwSelectUserEmail e1 Where e1.userID = a.userID) As EmailAddress,
(Select Top 1 c1.shipCompany From vwSelectOrderAddresses c1 Where c1.userID = a.userID) As UserCompany');
//$this->db->order_by('UserJoined', 'DESC')
$this->db->distinct();
if($_POST){
$usid = $this->input->post('UserID');
$ustxt = $this->input->post('TextSearch');
if(!empty($ustxt) || !empty($usid)){
if(!empty($usid)){
$this->db->where('a.UserID', $usid);
}elseif(!empty($ustxt)){
$this->session->set_userdata('USrch_Txt', $ustxt);
$this->db->join('vwSelectUserAddress b', 'b.userID = a.userID', 'left');
$this->db->join('vwSelectUserEmail c', 'c.userID = a.userID', 'left');
$this->db->join('vwSelectUserPhone d', 'd.userID = a.userID', 'left');
$this->db->join('vwSelectUserNotes e', 'e.userID = a.userID', 'left');
$this->db->join('vwSelectUserVehicle f', 'f.userID = a.userID', 'left');
$this->db->like('a.Username', $ustxt);
$orlike = array('a.UserFullName'=>$ustxt,
'b.addressStreet1'=>$ustxt,
'b.addressStreet2'=>$ustxt,
'b.addressCity'=>$ustxt,
'b.addressState'=>$ustxt,
'b.addressPostalCode'=>$ustxt,
'c.emailAddress'=>$ustxt,
'd.phoneNumber'=>$ustxt,
'e.Note'=>$ustxt,
'f.vehMake'=>$ustxt,
'f.vehModel'=>$ustxt,
'f.vehYear'=>$ustxt,
'f.vehTran'=>$ustxt,
'f.vehMake'=>$ustxt,
'f.vehEngine'=>$ustxt,
'f.vehDescription'=>$ustxt,);
$this->db->or_like($orlike);
}
}
}
$this->db->order_by('a.UserFullName', 'asc');
$this->db->limit(12, $page);
$qry = $this->db->get('vwSelectUser a');
$rs = $qry->result_array();
$config['base_url'] = '/users';
$config['per_page'] = 12;
$config['total_rows'] = $this->db->count_all('vwSelectUser');
$config['num_links'] = 5;
$config['first_link'] = '<span class="fa fa-angle-double-left page_num"></span>';
$config['last_link'] = '<span class="fa fa-angle-double-right page_num"></span>';
$config['cur_tag_open'] = '<span class="page_num bold">';
$config['cur_tag_close'] = '</span>';
$config['next_link'] = '<span class="fa fa-angle-right page_num"></span>';
$config['prev_link'] = '<span class="fa fa-angle-left page_num"></span>';
$config['uri_segment'] = 2;
$config['num_tag_open'] = '<span class="page_num">';
$config['num_tag_close'] = '</span>';
$this->pagination->initialize($config);
$data['rs'] = $rs;
$data['paging'] = $this->pagination->create_links();
$data['current_page'] = $page;
$this->load->view('templates/header');
$this->load->view('pages/users/list', $data);
$this->load->view('templates/footer');
}