2016-08-12 88 views
0

我知道這將最終顯而易見,但下面的方法多次插入我的array_keys。我試圖在chunk方法之前使用一個計數器,並且在第一次使用它時做一個(使用)使其進入並增量。該方法簡單地忽略它。有沒有一種聰明的方式來使用塊,只能插入一次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

這似乎是愚蠢的,但我不能讓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); 

}