提问人:akhiratunnisa 提问时间:12/16/2022 更新时间:12/16/2022 访问量:1422
LARAVEL 9:如何使用 maatwebsite 根据过滤器数据(id、月份和年份)将数据导出到 excel
LARAVEL 9: How to export data to excel based on filter data (id, month and years) using maatwebsite
问:
我正在根据employee_id过滤器、缺席月份和年份将数据导出到 excel:。
我已经设法获取了数据,但是当单击“下载 Excel”按钮时,内容只是空的 Excel,如下所示:
数据不会进入 Excel。
我的控制器:
public function rekapabsensiExcel(Request $request)
{
$idkaryawan = $request->id_karyawan;
$bulan = $request->query('bulan',Carbon::now()->format('m'));
$tahun = $request->query('tahun',Carbon::now()->format('Y'));
// simpan session
$idkaryawan = $request->session()->get('idkaryawan');
$bulan = $request->session()->get('bulan');
$tahun = $request->session()->get('tahun',);
// dd($idkaryawan,$bulan,$tahun );
if(isset($idkaryawan) && isset($bulan) && isset($tahun))
{
$data = Absensi::where('id_karyawan', $idkaryawan)
->whereMonth('tanggal', $bulan)
->whereYear('tanggal',$tahun)
->get();
// dd($data);
}else{
$data = Absensi::all();
}
return Excel::download(new RekapabsensiExport(['data'=>$data, 'idkaryawan'=>$idkaryawan]),'rekap_absensi_bulanan.xlsx');
}
我的RekapAbsensiExport.php:
<?php
namespace App\Exports;
use App\Models\Absensi;
use Maatwebsite\Excel\Concerns\FromCollection;
class RekapabsensiExport implements FromCollection
{
protected $id_karyawan;
// function __construct($id_karyawan) {
// $this->id_karyawan = $id_karyawan;
// }
public function headings(): array {
return [
"No. ID","ID Karyawan","NIK","Tanggal","Jam Kerja","Jam Masuk","Jam Pulang",
"Scan Masuk","Scan Pulang","Normal","Riil","Terlambat","Plg Cepat","Absent",
"Lembur","Jml Jam Kerja","pengecualian","Harus C/I","Harus C/O","Departemen",
"Hari Normal","Akhir Pekan","Hari Libur","Jml Kehadiran","Lembur Hari Normal",
"Lembur Akhir Pekan","Lembur Hari Libur"
];
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return Absensi::where('id_karyawan',$this->id_karyawan)->get();
}
}
我出错了哪一部分?请帮忙
答:
0赞
matticustard
12/16/2022
#1
目前,您没有收到对此语句的响应,因为您没有正确传递该值。$this->id_karyawan
null
return Absensi::where('id_karyawan', $this->id_karyawan)->get();
上面,您将值数组传递给 Export 类。但是,注释掉的构造函数仅配置为接受单个参数。如果我们坚持使用单个参数,你可以做这样的事情。
return Excel::download(new RekapabsensiExport($data, $idkaryawan),'rekap_absensi_bulanan.xlsx');
然后,导出构造函数将如下所示。
protected $data;
protected $id_karyawan;
function __construct($data, $id_karyawan) {
$this->data = $data;
$this->id_karyawan = $id_karyawan;
}
评论
0赞
akhiratunnisa
12/16/2022
我收到这样的错误:函数 App\Exports\RekapabsensiExport::__construct() 的参数太少,第 1 行传递到 C:\laragon\www\hrms\app\Http\Controllers\admin\AbsensiController.php 第 244 行,预计正好是 2
评论