2016-11-16 8 views
1

私はエクスポートに取り組んでいます.2つのボタンを使用したいのは、1つのレコードをエクスポートするだけです。もう1つは、チェックボックスで選択された複数のレコードをエクスポートすることです。私はIDの輸出方法を取得することができますが、データベースからデータを抽出し、csvファイルに配置する方法を知らない。1をエクスポートし、複数を.csv(laravel 5.3)としてエクスポート

私の方法は(これは単一レコードのエクスポートで動作します)です。この方法

<a href="/student/getExport/{{ $stuent->id }}">Export It</a> 

ルート

Route::get('/student/getExport/{id}', '[email protected]'); 

ため

public function getExport($id, Request $request) 
{ 
    $student = Students::find($id); 
    $name = $student->name . ".csv"; 
    $temp = tmpfile(); 
    $heading = array('Name', 'Group'); 

    fputcsv($temp, $heading,); 

    $values = array($student->name, $student->group); 

    fputcsv($temp, $values,); 
    fseek($temp, 0); 
    echo fread($temp, 1024); 
    header('Content-Type: text/csv; charset=utf-8'); 
    header("Content-Disposition: attachment; filename=" . $name); 
    fclose($temp); 
    die; 
} 

リンクはこちらティルそれは1つのレコードのエクスポートのためでした。

複数のレコードをエクスポートする場合、エクスポートするために必要なIDを取得するJavaScript関数が用意されています。私はgetExport方法で選択したレコードのIDを取得しています。このメソッドを介して

倍数のレコードのエクスポートのためのリンク

<a href="javascript:;" onclick="exportAll();"> Export Students </a> 

javascriptの方法

function exportAll() { 
    var students = $('input:checkbox:checked').map(function() { 
     return this.value; 
    }).get(); 
    $.ajax({ 
     type: "GET", 
     url: '/student/getExport/' + students, 
     data: { 
      ids: students 
     }, 
     success: function (result) { 
      if (result == 'export') { 
       window.location.href = "/smtp"; 
      } 
     } 
    }); 
} 

ヒントこのコードは、単一レコードと複数レコードの両方の削除に対して機能しますが、エクスポートにもこのレコードを使用する方法はわかりません。

public function destroy($id, Request $request) 
{ 
    if (empty($request->input('ids'))) 
    { 
     $student = Students::findOrFail($id); 
     $student->delete(); 
    } 
    else 
    { 
     $ids = $request->input('ids'); 
     $Student = Students::whereIn('id', $ids); 
     $student->delete(); 
     session()->flash('msg', trans('Deleted successfully.')); 
    } 
    return 'delete'; 
} 

同じ方法getExportに複数のレコードの輸出をachiveする方法を、私を助けてください。あなたはget methordを使用する必要が

おかげ

+0

コントローラでIDをカンマ区切りにしていますか? –

+0

どうすればテストできますか? 私はインデックスファイル上でそれをテストします。@Raunak Gupta –

+0

'getExport'メソッドで' dd($ id); 'を使用してください。 –

答えて

0

findのinsted、その後、あなたはそれがあなたのcsvファイルに追加するループに持っています。

これは私の以前のanswerから変更したコードです。

public function getExport($id) 
{ 
    $data = Students::whereIn('id', explode(',', $id)) 
     ->get(); 
    $filename = "students.csv"; 
    $handle = fopen($filename, 'w+'); 
    fputcsv($handle, array('name', 'class', 'section')); 
    foreach ($data as $student) 
    { 
     fputcsv($handle, array($student->name, $student->class, $student->section)); 
    } 
    fclose($handle); 

    $headers = array(
     'Content-Type' => 'text/csv', 
    ); 

    return \Response::download($filename, 'students.csv', $headers); 
} 
関連する問題