Php 如何将Codeigniter中两个连接表的数据转换为CSV文件

Php 如何将Codeigniter中两个连接表的数据转换为CSV文件,php,mysql,codeigniter,csv,Php,Mysql,Codeigniter,Csv,我可以将单个表的数据转换为csv文件,但当我加入两个表时,我不会根据用户过滤数据的方式(过滤方式:数据、类型等顺序:asc/desc)转换过滤后的数据,顺便说一句,我下载了一个用于将数据导出为csv文件的帮助文件 这是我的控制器 // Export to CSV Controller for CDR $items = $this->call_log_model->csv_asc( $data2,$this->session->userdata('

我可以将单个表的数据转换为csv文件,但当我加入两个表时,我不会根据用户过滤数据的方式(过滤方式:数据、类型等顺序:asc/desc)转换过滤后的数据,顺便说一句,我下载了一个用于将数据导出为csv文件的帮助文件

这是我的控制器

        // Export to CSV Controller for CDR

    $items = $this->call_log_model->csv_asc( $data2,$this->session->userdata('user_id') );
    query_to_csv($items,TRUE, 'CSV_FILE.csv');
}    

public function export_csv_desc(){
    $this->load->helper('csv_helper');
    $data2 = $this->input->post('viewFilter');

    $items = $this->call_log_model->csv_desc($data2,$this->session->userdata('user_id'));
    query_to_csv($items,TRUE, 'CSV_FILE.csv');
}
这是我的模型

    function csv_asc($data2,$id){
    $this->db->select('users.user_firstname, users.user_lastname,cdr.talk_time,
        cdr.aftertalk_time,cdr.hold_time,cdr.total_time,cdr.date_created,cdr.phone_number,cdr.classification');
    $this->db->from($this->table2);
    $this->db->join('users', 'cdr.agent_id = users.user_id', 'left');
    $this->db->where('cdr.tenant_id', $id);
    $this->db->order_by($data2, $this->order2);
    return $this->db->get();
}

function csv_desc($data2,$id){
    $this->db->select('users.user_firstname, users.user_lastname,cdr.talk_time,
        cdr.aftertalk_time,cdr.hold_time,cdr.total_time,cdr.date_created,cdr.phone_number,cdr.classification');
    $this->db->from($this->table2);
    $this->db->join('users', 'cdr.agent_id = users.user_id', 'left');
    $this->db->where('cdr.tenant_id', $id);
    $this->db->order_by($data2, $this->order);
    return $this->db->get();
}
这是ajax的代码

        $(document).ready(function(){

        var order = "";

        $('#viewFilter').change(function(){
            value = $('#viewFilter :selected').val();
        });

        $('.filter_AD').change(function(){
            value = $('#viewFilter :selected').val();
            value2 = $('.filter_AD :selected').val();
                if(value2 == 'Ascending'){
                    order = "ascend";
                    $.ajax({
                        url: "<?php echo base_url();?>tenant/view_report/ascend",
                        method: "POST",
                        data: {'viewFilter':value},
                        dataType: 'json',
                        success:function(data){
                            $('#cdr_control_holder').html('');
                            console.log(data);
                            for(i=0; i<data.length; i++){
                                html = '';
                                html+= '<tr>';
                                html+= '<td>'+data[i]['user_firstname']+' '+data[i]['user_lastname']+'</td>';
                                html+= '<td>'+data[i]['talk_time']+'</td>';
                                html+= '<td>'+data[i]['aftertalk_time']+'</td>';
                                html+= '<td>'+data[i]['hold_time']+'</td>';
                                html+= '<td>'+data[i]['total_time']+'</td>';
                                html+= '<td>'+data[i]['date_created']+'</td>';
                                html+= '<td>'+data[i]['phone_number']+'</td>';
                                html+= '<td>'+data[i]['classification']+'</td>';
                                html+= '</tr>';
                                $('#cdr_control_holder').append(html);
                            }
                        }
                    });
                }
                if(value2 == 'Descending'){
                    order = "descend";
                    $.ajax({
                        url: "<?php echo base_url();?>tenant/view_report/descend",
                        method: "POST",
                        data: {'viewFilter':value},
                        dataType: 'json',
                        success:function(data){
                            $('#cdr_control_holder').html('');
                            for(i=0; i<data.length; i++){
                                html = '';
                                html+= '<tr>';
                                html+= '<td>'+data[i]['user_firstname']+' '+data[i]['user_lastname']+'</td>';
                                html+= '<td>'+data[i]['talk_time']+'</td>';
                                html+= '<td>'+data[i]['aftertalk_time']+'</td>';
                                html+= '<td>'+data[i]['hold_time']+'</td>';
                                html+= '<td>'+data[i]['total_time']+'</td>';
                                html+= '<td>'+data[i]['date_created']+'</td>';
                                html+= '<td>'+data[i]['phone_number']+'</td>';
                                html+= '<td>'+data[i]['classification']+'</td>';
                                html+= '</tr>';
                                $('#cdr_control_holder').append(html);
                            }
                        }
                    });                        
                }
        });


        // CSV Button
        $('#csv_button').click(function(){
            console.log('<?php echo base_url();?>');
            if(order == 'ascend'){
                $(this).attr( "href" , "<?php echo base_url();?>tenant/view_report/export_csv_asc");
            }
            if(order == 'descend'){
                $(this).attr( "href" , "<?php echo base_url();?>tenant/view_report/export_csv_desc");
            }
        });

    });
$(文档).ready(函数(){
var order=“”;
$('#viewFilter')。更改(函数(){
值=$(“#视图过滤器:选定”).val();
});
$('.filter_AD').change(函数(){
值=$(“#视图过滤器:选定”).val();
value2=$('.filter_AD:selected').val();
如果(值2==‘升序’){
order=“上升”;
$.ajax({
url:“租户/查看报告/上升”,
方法:“张贴”,
数据:{'viewFilter':值},
数据类型:“json”,
成功:功能(数据){
$('#cdr_control_holder').html('');
控制台日志(数据);
对于(i=0;i