[英]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
$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.