【问题标题】:Laravel foreach in method returning only last resultLaravel foreach 在方法中只返回最后一个结果
【发布时间】:2016-12-09 07:06:37
【问题描述】:

我对此进行了很多搜索,但没有结果。抱歉,如果重复了,但我在 laravel 5.2 中使用 JasperPHP 时遇到问题,我需要帮助。

我正在尝试生成报告(显然),并且我正在使用带有 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 生成它?

【问题讨论】:

  • 您存储在一个变量中,因此它将存储最后一个结果。也许您需要将其存储为数组或串联字符串。
  • 你正在覆盖变量 mate。
  • @SalvadorP。你是第一个有正确答案的人,所以也许在下面添加它以便 OP 可以接受?
  • 作为答案发布,谢谢您的提示。 :)

标签: php laravel foreach jasper-reports


【解决方案1】:

您正在覆盖该值。

也许这对你有用,或者尝试不同的东西,使用数组或其他东西。

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

【讨论】:

  • 是的,事实上现在我可以在同一行中获取所有对象。我会尝试一些不同的东西,但至少这是一种解决方案。谢谢
猜你喜欢
  • 2020-05-06
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2017-04-16
相关资源
最近更新 更多