使用Laravel基于过滤器导出到Excel



我正在处理一个视图,该视图允许用户选择一个工作人员,然后选择一个日期范围,当他们单击筛选按钮时,它将只显示该工作人员在该日期期间的记录。我有工作,但我想实现一个导出到excel功能的工作人员和范围,但当我点击导出,我所有的记录导出到excel。有谁知道正确的方向是什么吗?

控制器:

public function exportvehicles()
{
return Excel::download(new ExportV, 'users.xlsx');
}

模型:

class ExportV implements FromCollection
{
public function collection()
{
$startDate = request()->input('startDate', '2021-01-01');
$endDate = request()->input('endDate', '2021-12-12');
return VehicleLog::join('vehicle', 'vehicleslog.vehicle_id', '=', 'vehicle.id')
->join('smsstaff', 'vehicleslog.smsstaff_key', '=', 'smsstaff.smsstaff_key')
->when(request()->input('smsstaff_key'), function ($query) {
$query->where('smsstaff.smsstaff_key', request()->input('smsstaff_key'));
})
->whereDate('log_dt', '>=', $startDate)
->whereDate('log_dt', '<=', $endDate)
->get();

}
}

您可以在将控制器发送到ExportV之前对其进行查询,这将使您轻松实现多种类型的过滤器。

控制器:

public function exportvehicles()
{
$startDate = request()->input('startDate', '2021-01-01');
$endDate = request()->input('endDate', '2021-12-12');
$item = VehicleLog::join('vehicle', 'vehicleslog.vehicle_id', '=', 'vehicle.id')
->join('smsstaff', 'vehicleslog.smsstaff_key', '=', 'smsstaff.smsstaff_key')
->when(request()->input('smsstaff_key'), function ($query) {
$query->where('smsstaff.smsstaff_key', request()->input('smsstaff_key'));
})
->whereDate('log_dt', '>=', $startDate)
->whereDate('log_dt', '<=', $endDate)
->get();
return Excel::download(new ExportV($item), 'users.xlsx');
}

ExcelV:

class ExcelV implements FromCollection
{
protected $item;
function __constuct ($item) {
$this->item = $item;
}
public function collection() {
return $this->item;
}
}

相关内容

  • 没有找到相关文章

最新更新