将数据库表导出到csv laravel

时间:2014-08-26 00:57:03

标签: php mysql laravel laravel-4

您好我正在尝试将数据库表用户导出到csv文件,我在我的控制器中使用以下方法:

 public function getExport()
{
    $table = User::all();
    $output='';
      foreach ($table as $row) {
          $output.=  implode(",",$row->toArray());
      }
      $headers = array(
          'Content-Type' => 'text/csv',
          'Content-Disposition' => 'attachment; filename="ExportFileName.csv"',
      );

    return Response::make(rtrim($output, "\n"), 200, $headers);
}

但是当我打开“ExportFileName.csv”时,我得到的不是Columns Headers,还有其他一些不在数据库中的垃圾?

在Laravel 4中最好和最简单的方法是什么

由于

1 个答案:

答案 0 :(得分:2)

您尚未将标头添加到CSV。在输出行之前,您应该执行以下操作:

foreach ($table[0] as $column => $value) {
    $output .= "$column,";
}
rtrim($output, ",");
$output .= "\n";

(还有更好的方法)。

您还需要在值中考虑特殊字符:

  • ""中的每个值换行以处理逗号,
  • 转义和引号,
  • 删除或替换任何\n