phpcsvexportlaravel-3fputcsv

Export whole table to CSV using laravel


I am new to laravel and having a tough time figuring out a way to export one table to csv. I have tried the following code in the controller class, but it gives me an error:

    public function get_export()
{
    $table = Cpmreport::all();
    $file = fopen('file.csv', 'w');
    foreach ($table as $row) {
        fputcsv($file, $row);
    }
    fclose($file);
    return Redirect::to('consolidated');
}

Model Class for Cpmreport:

    class Cpmreport extends Eloquent
    {
      public static $table='cpm_report';
    }

The error :

    Message:

    fputcsv() expects parameter 2 to be array, object given

    Location:

    C:\xampp\htdocs\cpm_report\application\controllers\cpmreports.php on line 195

Any help would be appreciated.


Solution

  • fputcsv($file, $table); should be fputcsv($file, $row), shouldn't it?

    And convert the object to an array using Eloquent's to_array()method: http://laravel.com/docs/database/eloquent#to-array

    public function get_export()
    {
        $table = Cpmreport::all();
        $file = fopen('file.csv', 'w');
        foreach ($table as $row) {
            fputcsv($file, $row->toArray());
        }
        fclose($file);
        return Redirect::to('consolidated');
    }