2016-11-16 92 views
1

我正在处理导出,我想使用2个按钮之一是仅导出一条记录,另一条是导出多个由复选框选择的记录。我能够在导出方法中获取id,但不知道如何从数据库提取数据并将其放入csv文件中。导出1和导出多个为.csv(laravel 5.3)

这里是我的方法(这是工作单记录导出)

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; 
} 

链接,这种方法

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

路线

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

到这里它是一个创纪录的出口

现在用于多记录导出我有一个JavaScript函数,它获取需要导出的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"; 
      } 
     } 
    }); 
} 

通过这种方法我越来越选定记录的ID在getExport方法。

提示此代码适用于单个和多个记录删除,但不知道如何将其用于导出。

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

感谢

+0

你在控制器中获取逗号分隔的ID吗? –

+0

我如何测试它? 我测试它在索引文件中的警报那里我已经用逗号@Raunak Gupta –

+0

在'getExport'方法中使用'dd($ id);'' –

回答

0

你必须使用get methord insted的的find,然后你必须循环在你的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); 
}