简体   繁体   English

Laravel CSV导出错误

[英]Laravel csv export error

I want to generate csv and below is my code. 我想生成csv,下面是我的代码。 but im getting error 但我收到错误

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

csv controller function 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 

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

You can use toArray() function after get() to convert result collection into the array like following: 您可以在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();

Then your below code will work okay! 然后您的以下代码将正常工作!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM