如何在导出时在excel表格中显示id的国家名、州名和城市名?

u5i3ibmn  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(684)

我在table上有一张唱片

Name | Mobile     | Country | State | City
XYZ  | 0123456789 | 231     | 3921  | 42737
mnb  | 0125415245 | 13      | 269   | 6602
lkh  | 9874525415 | 231     | 3939  | 44668

现在我正在使用codeigniter。我正在用phpexcel导出excel表中的数据
控制器:

public function export_order_list() {
    $object = new PHPExcel();
    $object->setActiveSheetIndex(0);
    $table_columns = array("Name","Mobile","Country","State","City");
    $column = 0;
    $object->getActiveSheet()->getStyle('1:1')->getFont()->setBold(true);

    foreach($table_columns as $field) {
        $object->getActiveSheet()->setCellValueByColumnAndRow($column, 1, $field);
        $column++;
    }
    $export_list = $this->Customer_model->export_order_list_model();//getting all records
    $excel_row = 2;
    foreach($export_list as $row) {
        $object->getActiveSheet()->setCellValueByColumnAndRow(0, $excel_row, $row->Name);
        $object->getActiveSheet()->setCellValueByColumnAndRow(1, $excel_row, $row->Mobile);
        $object->getActiveSheet()->setCellValueByColumnAndRow(2, $excel_row, $row->Country);
        $object->getActiveSheet()->setCellValueByColumnAndRow(3, $excel_row, $row->State);
        $object->getActiveSheet()->setCellValueByColumnAndRow(4, $excel_row, $row->City);
        $excel_row++;
    }

    $object_writer = PHPExcel_IOFactory::createWriter($object, 'Excel5');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="list.xls"');
    $object_writer->save('php://output');
}

型号:

public function export_order_list_model(){
    $this->db->select("*");
    $this->db->from('tbl_customer');
    $query = $this->db->get();
    $result = $query->result();
    if($result) {
        return $result;
    } else {
        return 0;
    }
}

我正在获取输出。

现在我的问题是如何显示身份证上的国家名称、州名称和城市名称?
我需要这样的输出

我在数据库中有所有国家、州和城市的名称,表的列名是

Country
id |country_name

State
id| state_name |country_id

City
id |cities_name|state_id

更新:
请检查我的查询是否正确?因为这对我没用。

$this->db->select("*");
$this->db->from('tbl_customer');
$this->db->join('Country', 'Country.id=tbl_customer.c_b_country');
$this->db->join('State', 'State.id=tbl_customer.c_b_state'); 
$this->db->join('City', 'City.id=tbl_customer.c_b_city');
3npbholx

3npbholx1#

此查询将起作用。

$this->db->select("name,mobile,country,state,city");
$this->db->from('customer');
$this->db->join('country', 'country.id=customer.country_id','left');
$this->db->join('state', 'state.id=customer.state_id','left'); 
$this->db->join('city', 'city.id=customer.city_id','left');
whhtz7ly

whhtz7ly2#

原始sql查询应如下所示:

SELECT 
  cu.name AS Name, 
  cu.mobile AS Mobile,
  c.country_name AS Country
  s.state_name AS State,
  ct.cities_name AS City
FROM tbl_customer cu
  JOIN Country c ON cu.Country = c.id
  JOIN State s ON cu.State = s.id
  JOIN City ct ON cu.City = ct.id;

这里发生了一些事情:
用您计划使用的数据联接每个表
在select中,必须引用列在联接表中的显示
删除了 select * 最终会在多个地方出现像“id”这样的模糊字段
使用as关键字将列重命名为代码中使用的列
请尝试直接在数据库中运行这个原始查询,以确保它达到预期效果。在那之后,它只是一个将它格式化回php的例子。

相关问题