2016-08-12 12 views
0

これは明らかに終わりますが、以下のメソッドはmy array_keysを複数回挿入します。私は、チャンクメソッドの前にカウンタを使用し、それを使用して(使用して)最初に使用した後にインクリメントしようとしました。このメソッドは単にそれを無視します。チャンクを使い、一度だけarray_keysを挿入するスマートな方法はありますか?laravelチャンクはイテレータを無視します

$resultMain->chunk(2000, function ($portion) { 
    { 
     $fh = fopen('php://output', 'w'); 
     $heading = false; 
     if (!empty($portion)) 
      foreach ($portion as $row) { 
       $row = json_decode(json_encode($row), true); 
       if (!$heading) { 
        // output the column headings 
        fputcsv($fh, array_keys($row)); 
        $heading = true; 
       } 
       // loop over the rows, outputting them 
       fputcsv($fh, array_values($row)); 
      } 
    } 
}); 
fclose($fh); 

}

答えて

0

これは愚かなようだが、私は私が(これは巨大な結果セットをある)最初のCOLで、他の方法を取得してみましょうlaravelすることはできません - 誰もがそれほど奇妙なと考えることができる場合

$header = $resultMain->take(1)->get(); 
    foreach ($header as $row) { 
     $row = json_decode(json_encode($row), true); 
     $fh = fopen('php://output', 'w'); 
     fputcsv($fh, array_keys($row)); 
    } 

$resultMain->chunk(2000, function ($portion){ 
    { 
     $fh = fopen('php://output', 'w'); 
     if (!empty($portion)) 
      foreach ($portion as $row) { 
       $row = json_decode(json_encode($row), true); 
       // loop over the rows, outputting them 
       fputcsv($fh, array_values($row)); 
      } 
    } 
}); 
fclose($fh); 

}

:私はすべての耳だろうこれを行う方法
関連する問題