3
votes

I am using Laravel 5.4 and I want to export a record to a excel file but I got this error

Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array, string given, called in C:\xampp\htdocs\www\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1332 and defined

and here is my code:

   $export = Student::all();
    Excel::create('Export Excel',function($excel) use($export){
        $excel->sheet('Sheet 1', function($sheet) use($export){
            $sheet->fromArray($export);

        });
    })->download('xlsx');
   $export = Student::all();
Excel::create('Export Excel',function($excel) use($export){
    $excel->sheet('Sheet 1', function($sheet) use($export){
        $sheet->fromArray($export);

    });
})->download('xlsx');
2
What is the content of your code at line 1332?Paul Santos

2 Answers

1
votes

$export is an Eloquent collection and you are using the fromArray method so it expects an array.

You can do two things:

  1. Convert your Eloquent collection to an array:

$sheet->fromArray($export->toArray());

  1. Use the fromModel method that accepts an Eloquent collection:

$sheet->fromModel($export);

0
votes

Perhaps you have a model named "Excel" that makes the problem.

Just make an alias for "Maatwebsite/Excel" when you imported :

use Maatwebsite\Excel\Facades\Excel as MaatExcel;