Exportar dados filtrados em CAKEPHP 3
15/10/2021
0
Boa tarde povo, estou com o seguinte problema: Na aplicação tenho uma tela de paginação dos resultados e possuo uma parte para o usuário aplicar os filtros, campos que o usuário pode preencher para trazer apenas o que for do seu interesse na página de listagem.
Utilizando como exemplo a entidade Colaboradores, segue o seguinte fluxo:
1º Usuário informa os dados no Filtro (Nome, CPF, Data Nascimento, etc.. );
2º Com base nesses dados informados é retornado todos os registros com base nos campos preenchidos.
Eu já tenho um que exporta todos os dados da tabela, porém preciso adaptar ele, para que quando o usuário filtrar e exportar em Excel, apenas o resultado que está sendo exibido na tela.
Resumindo... eu gostaria de exportar apenas os resultados filtrados pelo usuário e não todos os dados da tabela.
Desde já agradeço qualquer apoio.
O código abaixo exporta todos os dados da tabela
Utilizando como exemplo a entidade Colaboradores, segue o seguinte fluxo:
1º Usuário informa os dados no Filtro (Nome, CPF, Data Nascimento, etc.. );
2º Com base nesses dados informados é retornado todos os registros com base nos campos preenchidos.
Eu já tenho um que exporta todos os dados da tabela, porém preciso adaptar ele, para que quando o usuário filtrar e exportar em Excel, apenas o resultado que está sendo exibido na tela.
Resumindo... eu gostaria de exportar apenas os resultados filtrados pelo usuário e não todos os dados da tabela.
Desde já agradeço qualquer apoio.
O código abaixo exporta todos os dados da tabela
public function export(){ try { $this->response = $this->response->withDownload('DADOS_EXPORTADOS.csv'); $_header = ['Colaborador', 'Data', 'Nivel', 'Classe', 'Grau', 'Promocao']; $connection = ConnectionManager::get('default'); $results = $connection->execute(" SELECT c.name, DATE_FORMAT(l.date,GET_FORMAT(DATE,'EUR')), CASE WHEN l.level = 1 THEN 'N1' WHEN l.level = 2 THEN 'N2' WHEN l.level = 3 THEN 'N3' WHEN l.level = 4 THEN 'N4' END AS Level , CASE WHEN l.class = 1 THEN 'A' WHEN l.class = 2 THEN 'B' WHEN l.class = 3 THEN 'C' END AS Classe, CASE WHEN l.degree = 1 THEN 'I' WHEN l.degree = 2 THEN 'II' WHEN l.degree = 3 THEN 'III' WHEN l.degree = 4 THEN 'IV' WHEN l.degree = 5 THEN 'V' WHEN l.degree = 6 THEN 'VI' END AS Grau , IFNULL(p.title, ' - ') FROM levelings l INNER JOIN collaborators c ON l.collaborator_id = c.id LEFT JOIN promotions p ON l.promotion_id = p.id WHERE l.flag = 1; ")->fetchAll(); $_serialize = 'results'; $this->viewBuilder()->setClassName('CsvView.Csv'); $this->set(compact('results', '_serialize', '_header', '_extract')); } catch (\Exception $exc) { $this->Flash->error(__('Falha na conexão! Contate o administrador.')); return $this->redirect($this->referer()); #volta para local de origem } }
Yuri Aguiar
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)