Fórum Exportar dados filtrados em CAKEPHP 3 #616923
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 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 :)