2016-11-16 2 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, которая получает идентификаторы, необходимые для экспорта.

Ссылка для Множественные записи Экспорт

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

С помощью этого метода я получаю корочки выбранной записи в методе 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

Вы получаете разделенные запятыми идентификаторы в контроллере? –

+0

как я могу проверить его? Я проверяю его на индексном файле в предупреждении, что у меня есть с запятой @Raunak Gupta –

+0

Используйте 'dd ($ id);' 'методом' getExport'. –

ответ

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); 
} 
Смежные вопросы