Я использую Laravel 5.8 и mysql. Я хочу создать поиск между датами, используя поле made_at в качестве критерия. Когда выбраны StartDate и EndDate, а затем нажата кнопка поиска, результат отобразится в GridView. Затем при нажатии кнопки «Экспорт» выполняется экспорт в Excel. По умолчанию он отображается в GridView. но при нажатии кнопок поиска и экспорта ничего не происходит.
Я создал контроллер отчетов и представление, включая средства выбора даты
* 1005-регулятора *
public function showServiceOverview()
{
$serviceoverviews = ServicePackage::with('services')->paginate(15);
$column = '';
$string = '';
$dateFrom = '';
$dateTo = '';
return view('report.serviceoverview.show_service_overview', compact('serviceoverviews', 'column', 'string','dateFrom','dateTo'));
}
public function searchServiceoverview(Request $request)
{
try
{
$column = $request->column;
$dateTo = $request->dateTo;
$dateFrom = $request->dateFrom;
$data = ['created_at' => 'service_package.created_at', 'title' => 'service_package.title', 'descriptions' => 'service_package.descriptions', 'service_name' => 'services.name'];
if ($request->button == 'Search')
{
$serviceoverviews = \DB::table('service_package')->select('service_package.id', 'service_package.title', 'service_package.descriptions', 'service_package.created_at', 'services.name')->join('services', 'service_package.service_id', '=', 'services.id');
if (!empty($column) && !empty($string) && empty($dateFrom) && empty($dateTo))
{
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%' ")->paginate(20);
}
elseif (!empty($dateFrom) && !empty($dateTo) && empty($column) && empty($string))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereBetween('created_at', [$dateFrom, $dateTo])->paginate(20);
}
elseif (!empty($column) && !empty($string) && !empty($dateFrom) && !empty($dateTo))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%'")->whereBetween('created_at', [$dateFrom, $dateTo])->paginate(20);
}
elseif (empty($column) && empty($string) && !empty($dateFrom) && !empty($dateTo))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereRaw()->whereBetween('created_at', [$dateFrom, $dateTo])->paginate(20);
}
else
{
$serviceoverviews = $serviceoverviews->paginate(20);
}
$post = 'post';
return view('report.serviceoverview.show_service_overview', compact('serviceoverviews', 'post', 'column', 'string','dateFrom','dateTo'));
}
else
{
/**
* First we build a query string which is common in both cases whether we have a condition set or not
*/
$serviceoverviews = \DB::table('service_package')->select('service_package.id', 'service_package.title', 'service_package.descriptions', 'service_package.created_at', 'services.name')->join('services', 'service_package.service_id', '=', 'services.id');
if (!empty($column) && !empty($string) && empty($dateFrom) && empty($dateTo))
{
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%' ")->get();
}
elseif (!empty($dateFrom) && !empty($dateTo) && empty($column) && empty($string))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereBetween('date_from', [$dateFrom, $dateTo])->get();
}
elseif (!empty($column) && !empty($string) && !empty($dateFrom) && !empty($dateTo))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%'")->whereBetween('date_from', [$dateFrom, $dateTo])->get();
}
else
{
$serviceoverviews = $serviceoverviews->get();
}
$fileName = 'Service_Overview_' . rand(1, 1000) . '.csv';
$filePath = storage_path('export/') . $fileName;
$file = new \SplFileObject($filePath, "a");
// Add header to csv file.
$headers = ['id', 'title', 'descriptions', 'created_at', 'service_name'];
$file->fputcsv($headers);
$status = '';
foreach ($leaves as $leave)
{
$file->fputcsv([$serviceoverviews->id, $serviceoverviews->title, $serviceoverviews->descriptions, $serviceoverviews->created_at, $serviceoverviews->service_name]);
}
return response()->download(storage_path('export/') . $fileName);
}
}
catch (\Exception $e)
{
return redirect()->back()->with('message', $e->getMessage());
}
}
View
public function searchServiceoverview(Request $request)
{
try
{
$column = $request->column;
$dateTo = $request->dateTo;
$dateFrom = $request->dateFrom;
$data = ['created_at' => 'service_package.created_at', 'title' => 'service_package.title', 'descriptions' => 'service_package.descriptions', 'service_name' => 'services.name'];
if ($request->button == 'Search')
{
$serviceoverviews = \DB::table('service_package')->select('service_package.id', 'service_package.title', 'service_package.descriptions', 'service_package.created_at', 'services.name')->join('services', 'service_package.service_id', '=', 'services.id');
if (!empty($column) && !empty($string) && empty($dateFrom) && empty($dateTo))
{
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%' ")->paginate(20);
}
elseif (!empty($dateFrom) && !empty($dateTo) && empty($column) && empty($string))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereBetween('created_at', [$dateFrom, $dateTo])->paginate(20);
}
elseif (!empty($column) && !empty($string) && !empty($dateFrom) && !empty($dateTo))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%'")->whereBetween('created_at', [$dateFrom, $dateTo])->paginate(20);
}
elseif (empty($column) && empty($string) && !empty($dateFrom) && !empty($dateTo))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereRaw()->whereBetween('created_at', [$dateFrom, $dateTo])->paginate(20);
}
else
{
$serviceoverviews = $serviceoverviews->paginate(20);
}
$post = 'post';
return view('report.serviceoverview.show_service_overview', compact('serviceoverviews', 'post', 'column', 'string','dateFrom','dateTo'));
}
else
{
/**
* First we build a query string which is common in both cases whether we have a condition set or not
*/
$serviceoverviews = \DB::table('service_package')->select('service_package.id', 'service_package.title', 'service_package.descriptions', 'service_package.created_at', 'services.name')->join('services', 'service_package.service_id', '=', 'services.id');
if (!empty($column) && !empty($string) && empty($dateFrom) && empty($dateTo))
{
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%' ")->get();
}
elseif (!empty($dateFrom) && !empty($dateTo) && empty($column) && empty($string))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereBetween('date_from', [$dateFrom, $dateTo])->get();
}
elseif (!empty($column) && !empty($string) && !empty($dateFrom) && !empty($dateTo))
{
$dateTo = date_format(date_create($request->dateTo), 'Y-m-d');
$dateFrom = date_format(date_create($request->dateFrom), 'Y-m-d');
$serviceoverviews = $serviceoverviews->whereRaw($data[$column] . " like '%" . $string . "%'")->whereBetween('date_from', [$dateFrom, $dateTo])->get();
}
else
{
$serviceoverviews = $serviceoverviews->get();
}
$fileName = 'Service_Overview_' . rand(1, 1000) . '.csv';
$filePath = storage_path('export/') . $fileName;
$file = new \SplFileObject($filePath, "a");
// Add header to csv file.
$headers = ['id', 'title', 'descriptions', 'created_at', 'service_name'];
$file->fputcsv($headers);
$status = '';
foreach ($leaves as $leave)
{
$file->fputcsv([$serviceoverviews->id, $serviceoverviews->title, $serviceoverviews->descriptions, $serviceoverviews->created_at, $serviceoverviews->service_name]);
}
return response()->download(storage_path('export/') . $fileName);
}
}
catch (\Exception $e)
{
return redirect()->back()->with('message', $e->getMessage());
}
}