2016-08-03 72 views
2

我已經搜索了很多關於這個沒有結果。對不起,如果它是重複的,但我有一個問題在laravel 5.2中使用JasperPHP,我需要幫助。Laravel foreach方法只返回最後一個結果

我想生成一個報告(顯然),我用一個foreach的方法來獲取報告列表。

$results = $this->PessoaRepository->all(); 
$nomeCompleto = ''; 
$cpf = ''; 
foreach($results as $pessoa){ 
    $nomeCompleto = $pessoa['nome_completo']; 
    $cpf = $pessoa['cpf']; 
} 

$jasper = new JasperPHP(); 

$jasper->process(
    app_path() . "/Domains/Pessoas/Reports/Pessoa/Pessoas.jrxml", 
    false, 
    array('pdf', 'rtf', 'xls', 'xlsx', 'docx', 'odt', 'ods', 'pptx', 'csv', 'html', 'xhtml', 'xml', 'jrprint'), 
    array('nome_completo' => $nomeCompleto, 'cpf' => $cpf) 
    **strong text**)->execute(); 

當我調用這個方法一切正常,它會生成文件,但foreach只返回最後的結果。我怎麼能解決它或通過一個列表jasperPHP生成它?

+2

您正在存儲一個變量,所以它會存儲最後的結果。也許你需要將它作爲一個數組或串聯字符串來存儲。 –

+0

您正在覆蓋變量匹配。 – Andrew

+0

@SalvadorP。你是第一個有正確答案的人,所以或許可以在下面添加它,以便OP可以接受? –

回答

2

您正在覆蓋該值。

也許這會適合你,或嘗試一些不同的東西,使用數組或其他東西。

$results = $this->PessoaRepository->all(); 
$nomeCompleto = ''; 
$cpf = ''; 
foreach($results as $pessoa){ 
    $nomeCompleto .= $pessoa['nome_completo'].' '; // not overwrite the var 
    $cpf .= $pessoa['cpf'].' '; 
} 

$jasper = new JasperPHP(); 

$jasper->process(
    app_path() . "/Domains/Pessoas/Reports/Pessoa/Pessoas.jrxml", 
    false, 
    array('pdf', 'rtf', 'xls', 'xlsx', 'docx', 'odt', 'ods', 'pptx', 'csv', 'html', 'xhtml', 'xml', 'jrprint'), 
    array('nome_completo' => $nomeCompleto, 'cpf' => $cpf) 
    **strong text**)->execute(); 
+0

是的,實際上現在我可以在同一行中獲取所有對象。我會嘗試一些不同的東西,但至少這是一個解決方案。謝謝 –

相關問題