RPeraltaJr
7/26/2019 - 3:46 PM

Export to CSV Method

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Submission;
use Response; // for export method

class HomeController extends Controller
{
  // ...
  public function export(Request $request, Submission $submission) {

    if ($request->has('from') && $request->has('to')) {
        $date_from = $request->from;
        $date_to = $request->to;
        $submission = $submission->whereBetween("created_at", ["{$date_from} 00:00:00", "{$date_to} 23:59:59"]);
    }

    $table = $submission->get();

    $filename = "submissions.csv";
    $handle = fopen($filename, 'w+');
    fputcsv($handle, array(
        'First Name', 
        'Last Name', 
        'City', 
        'State', 
        'Zip', 
        'Email', 
        'Phone', 
        'CDL-A',
        'Experience',
        'Submitted',
    ));

    foreach($table as $row) {
        fputcsv($handle, array(
            $row['first_name'], 
            $row['last_name'], 
            $row['city'],
            $row['state'],
            $row['zipcode'],
            $row['email'],
            $row['phone'],
            $row['cdla'],
            $row['experience'],
            $row['created_at'],
        ));
    }

    fclose($handle);

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

    return Response::download($filename, 'submissions.csv', $headers);

  }
}
<?php 

// ...
Route::get('/export', 'HomeController@export');