【问题标题】:Laravel csv export errorLaravel csv 导出错误
【发布时间】:2017-02-26 14:12:25
【问题描述】:

我想生成 csv,下面是我的代码。但我收到错误

array_keys() expects parameter 1 to be array, object given

csv 控制器函数

        $list = DB::table('festivals')
        ->join('namedesgs', 'festivals.id', '=', 'namedesgs.festival')
        ->select(DB::raw("festivals.id ,GROUP_CONCAT(namedesgs.name SEPARATOR '\n') as names,GROUP_CONCAT(namedesgs.designation SEPARATOR '\n') as namese"))
        ->groupBy('festivals.id')
        ->get();

    array_unshift($list, array_keys($list[0]));

$callback = function () use ($list) {
$FH = fopen('php://output', 'w');
foreach ($list as $row) {
    foreach ($row as $key => $val) {
        $row[$key] = '="'.str_replace('"', '\"', $val).'"';
    }
    fputcsv($FH, $row);
}
fclose($FH);

};

    return 

响应::stream($callback, 200, $headers);

【问题讨论】:

    标签: php laravel csv


    【解决方案1】:

    您可以在 get() 之后使用 toArray() 函数将结果集合转换为数组,如下所示:

    $list = DB::table('festivals')
            ->join('namedesgs', 'festivals.id', '=', 'namedesgs.festival')
            ->select(DB::raw("festivals.id ,GROUP_CONCAT(namedesgs.name SEPARATOR '\n') as names,GROUP_CONCAT(namedesgs.designation SEPARATOR '\n') as namese"))
            ->groupBy('festivals.id')
            ->get()
            ->toArray();
    

    那么你下面的代码就可以正常工作了!

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 1970-01-01
      • 2015-11-21
      • 2013-10-11
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多