2017-02-26 4 views
2

私はcsvを生成したい、以下は私のコードです。しかし、イム取得エラーLaravel 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 

Response :: stream($ callback、200、$ headers);

答えて

0

次のような結果を配列にコレクションを変換するために、()を取得した後の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(); 

を次に、あなたの次のコードは大丈夫に動作します!

関連する問題