Laravel 使用 maatwebsite 从查询 returns 生成 excel 错误
Laravel generate excel from query returns an error using maatwebsite
基本上我得到了一个查询,结果将被创建为一个 excel 文件。这是我的代码
$data = \DB::table('checkers')
->where('remarks_id',2)
->join('schedules','schedules.id','=','checkers.schedule_id')
->join('teachers','schedules.teacher_id','=','teachers.id')
->join('subject_codes','subject_codes.id','=','schedules.subject_code_id')
->join('remarks','remarks.id','=','checkers.remarks_id')
->where('checkers.created_at', '=>', $request->from)
->where('checkers.created_at', '=<', $request->to)
->select('teachers.fullname','subject_codes.subject_description','remarks.remarks_desc','checkers.created_at')
->get();
$data = $data->map(function ($x) {
return json_decode(json_encode($x), true);
})->all();
// dd($data);
Excel::create('report', function($excel) use($data) {
$excel->sheet('Sheetname', function($sheet) use($data) {
});
})->export('xls');
当我做 `dd($data)
array:2 [
0 => {#294
+"fullname": "Edcel Pagagao"
+"subject_description": "Capstone 1"
+"remarks_desc": "No Teacher Around"
+"created_at": "2020-01-30 00:00:00"
}
1 => {#298
+"fullname": "Edcel Pagagao"
+"subject_description": "Capstone 1"
+"remarks_desc": "No Teacher Around"
+"created_at": "2020-01-27 00:00:00"
}
]
这是文档所说的 https://docs.laravel-excel.com/2.1/export/array.html 基于 2.x 版本
但是我还是报错了continue" targeting switch is equivalent to "break". Did you mean to use "continue 2
按照你的说法 link Link 第一个例子说你需要像下面这样传递 array 数据
$array_data = array(
array('data1', 'data2'),
array('data3', 'data4')
);
$sheet->fromArray($array_data);
您可以使用 toArray()
将集合更改为数组
$data = \DB::table('checkers').....->select('teachers.fullname','subject_codes.subject_description',
'remarks.remarks_desc','checkers.created_at')
->get()
->toArray();
基本上我得到了一个查询,结果将被创建为一个 excel 文件。这是我的代码
$data = \DB::table('checkers')
->where('remarks_id',2)
->join('schedules','schedules.id','=','checkers.schedule_id')
->join('teachers','schedules.teacher_id','=','teachers.id')
->join('subject_codes','subject_codes.id','=','schedules.subject_code_id')
->join('remarks','remarks.id','=','checkers.remarks_id')
->where('checkers.created_at', '=>', $request->from)
->where('checkers.created_at', '=<', $request->to)
->select('teachers.fullname','subject_codes.subject_description','remarks.remarks_desc','checkers.created_at')
->get();
$data = $data->map(function ($x) {
return json_decode(json_encode($x), true);
})->all();
// dd($data);
Excel::create('report', function($excel) use($data) {
$excel->sheet('Sheetname', function($sheet) use($data) {
});
})->export('xls');
当我做 `dd($data)
array:2 [
0 => {#294
+"fullname": "Edcel Pagagao"
+"subject_description": "Capstone 1"
+"remarks_desc": "No Teacher Around"
+"created_at": "2020-01-30 00:00:00"
}
1 => {#298
+"fullname": "Edcel Pagagao"
+"subject_description": "Capstone 1"
+"remarks_desc": "No Teacher Around"
+"created_at": "2020-01-27 00:00:00"
}
]
这是文档所说的 https://docs.laravel-excel.com/2.1/export/array.html 基于 2.x 版本
但是我还是报错了continue" targeting switch is equivalent to "break". Did you mean to use "continue 2
按照你的说法 link Link 第一个例子说你需要像下面这样传递 array 数据
$array_data = array(
array('data1', 'data2'),
array('data3', 'data4')
);
$sheet->fromArray($array_data);
您可以使用 toArray()
$data = \DB::table('checkers').....->select('teachers.fullname','subject_codes.subject_description',
'remarks.remarks_desc','checkers.created_at')
->get()
->toArray();