编码器分页DB结果问题


Codeigniter Paging DB Results Issue

我遇到了一个问题,我正在尝试在我的一个模型中运行查询,得到一些分页代码。

我待会再谈这个问题

<标题> 代码
public function current($page = 0){
    if($_POST){
        
    }else{
        $this->db->start_cache();
        $this->db->select('b.orderID, b.orderTracking, b.orderShipped, b.orderShippedOn, b.orderPaid, b.orderPaidOn, 
                         (Select Top 1 c.payTranID From vwSelectOrderPayments c where c.orderID = b.orderID Order By c.payPosted Desc) as TranID');
        $this->db->distinct();
        $this->db->from('vwSelectOrders b');
        $this->db->where('b.orderPaid', 1);
        $this->db->where('b.orderPaidOn >', date('m/d/Y', strtotime('-300 days')));
        $this->db->stop_cache();
        $total_rows = $this->db->count_all_results();
        $this->db->order_by('b.orderPaidOn', 'desc');
        $this->db->limit(12, $page);
        $qry = $this->db->get();
        $rs = $qry->result_array();
        $this->db->flush_cache();
        $config['base_url'] = '/orders/current';
        $config['per_page'] = 12;
        $config['total_rows'] = $total_rows;
        $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['paging'] = $this->pagination->create_links();
    }
    $data['rs'] = $rs;
    $data['current_page'] = $page;
    $this->load->view('templates/header');
    $this->load->view('pages/orders/current', $data);
    $this->load->view('templates/footer');
}

显示第一页没有问题,但是,在单击分页链接时,我看到一个CI数据库错误:The multi-part identifier "b.orderID" could not be bound.

生成的查询是:
SELECT b.orderID,b.orderTracking,b.orderShipped,b.orderShippedOn,b.orderPaid,b.orderPaidOn,
    (Select Top 1 c.payTranID From vwSelectOrderPayments c where c.orderID = b.orderID Order By c.payPosted Desc) as TranID 
FROM ( SELECT row_number() OVER (ORDER BY b.orderPaidOn desc) AS 
    CI_offset_row_number, b.orderID, b.orderTracking, b.orderShipped, b.orderShippedOn, b.orderPaid, b.orderPaidOn, 
        (Select Top 1 c.payTranID From vwSelectOrderPayments c where c.orderID = b.orderID Order By c.payPosted Desc) as TranID 
    FROM vwSelectOrders b 
    WHERE b.orderPaid = 1 AND b.orderPaidOn > '05/21/2013' ) AS A 
WHERE A.CI_offset_row_number BETWEEN (13) AND (24)

我试图在MS SQL管理器中运行,并呈现了:

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "b.orderID" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "b.orderTracking" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "b.orderShipped" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "b.orderShippedOn" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "b.orderPaid" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "b.orderPaidOn" could not be bound.
Msg 4104, Level 16, State 1, Line 2
The multi-part identifier "b.orderID" could not be bound.

现在,我在另一个模型中使用几乎完全相同的代码,这个问题没有发生。两者之间的区别是我正在查询的视图。

我能做些什么来解决这个问题?

您必须使用别名A的字段。

代替b.orderID, b.orderTracking ....你应该使用as A.orderID, A.orderTracking .

修改代码:

$this->db->select('A.orderID, A.orderTracking, A.orderShipped, A.orderShippedOn,A.orderPaid, A.orderPaidOn, 
                         (Select Top 1 c.payTranID From vwSelectOrderPayments c where c.orderID = b.orderID Order By c.payPosted Desc) as TranID');