Exportar dados filtrados em CAKEPHP 3
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
Curtidas 0