2016-08-03 31 views
2

Ich habe viel darüber ohne Ergebnis gesucht. Sorry, wenn es dupliziert ist, aber ich habe ein Problem mit JasperPHP in Laravel 5.2 und ich brauche eine Hilfe.Laravel foreach in Methode nur letztes Ergebnis zurückgeben

Ich versuche, einen Bericht zu erstellen (offensichtlich), und ich verwende eine Methode mit einer Foreach, um eine Liste für den Bericht zu erhalten.

$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(); 

Wenn ich diese Methode alles nennen funktioniert, ist es die Dateien erzeugen, aber die foreach nur das letzte Ergebnis zurückkehrt. Wie könnte ich es lösen oder eine Liste an jasperPHP übergeben?

+2

Sie speichern in einer Variablen, so dass das letzte Ergebnis gespeichert wird. Vielleicht müssen Sie es als ein Array oder eine verkettete Zeichenfolge speichern. –

+0

Sie überschreiben die Variablen Mate. – Andrew

+0

@SalvadorP. Sie sind die erste Person mit der richtigen Antwort, also fügen Sie sie vielleicht unten hinzu, damit das OP akzeptieren kann? –

Antwort

2

Sie überschreiben den Wert.

Vielleicht funktioniert das für Sie, oder versuchen Sie etwas anderes, verwenden Sie Arrays oder etwas.

$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

Ja, tatsächlich kann ich jetzt alle Objekte in der gleichen Zeile bekommen. Ich werde etwas anderes ausprobieren, aber das ist zumindest eine Lösung. Vielen Dank –