Как отобразить название страны, название штата и название города с указанным идентификатором в листе Excel при экспорте? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть записи в таблице, которые

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

Теперь я использую CodeIgniter.Я экспортирую данные в таблицу Excel, используя PHPExcel

Контроллер:

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;
    }
}

Я получаю вывод.

enter image description here

Теперь моя проблема в том, как отобразить название страны, название штата и название города с указанием идентификатора?

Мне нужен такой вывод

enter image description here

У меня есть все страны, название штата и города в базе данных и названия столбцов таблиц:

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');

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Этот запрос будет работать.

$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');
0 голосов
/ 19 октября 2018

Ваш необработанный 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 *, в результате которого в нескольких местах будут вытягиваться неоднозначные поля, такие как "id"
  • Используетсяключевое слово AS, чтобы переименовать столбцы в то, что вы использовали в своем коде

Попробуйте выполнить этот необработанный запрос в вашей БД напрямую, чтобы убедиться, что он выполняет то, что вы ожидаете.После этого это просто случай форматирования обратно в ваш PHP.

...