Ошибка " serialization of 'closure' is not allowed " при работе c Laravel в Job
У пользователей есть возможность скачивать файлы с сайта , но чтоб не забивать потоки использую Queue , но тут возникакет ошибка причину которой понять я не могу
так выглядит мой контроллер
public function exportList(Request $request)
{
$criticalDate = date('d-m-Y', (strtotime(date('Y-m-d')) - (45 * 86400)));
$validator = Validator::make($request->all(), [
'from_date' => ['required', 'date', 'after:' . $criticalDate],
]);
if ($validator->fails()) {
return redirect()->back()->with('message', $validator->errors());
}
$filters = PaymentViewFilters::get();
ExportJob::dispatch($request, $filters);
}
А это Job в котором по заданным фильтрам и данным из request создается файл для загрузки
class ExportJob implements ShouldQueue
{ use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $request;
protected $filters;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Request $request, $filters)
{
$this->request = $request;
$this->filters = $filters;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$isAdmin = perm('payments:list-all');
$isAgent = perm('payments:list-agent');
$isProvider = perm('payments:list-provider');
$user = $this->request->user();
$query = DB::table('payments_view')
->when($isAgent, function ($query) use ($user) {
$query->where('agent_id', $user->agent_id);
})
->when($isProvider, function ($query) use ($user) {
$query->where('provider_id', $user->provider_id);
});
$query->select(
'id',
'agent_id',
'agent_name',
'provider_name',
'service_name',
'amount',
'provider_amount',
'status_id',
'status_name',
'agent_trans_id',
'provider_payment_id',
'account_id',
'created_at'
);
$query = ControllerUtils::executeFilters($query, $this->filters);
$exportData = $query->get()->toArray();
$path = 'provider_payments/AllData';
if ($this->request->from_date) {
$path .= '_From-' . $this->request->from_date;
}
if ($this->request->to_date) {
$path .= '_To-' . $this->request->to_date;
}
$path .= '.xlsx';
Excel::store(new PaymentsExport($exportData), $path);
$path = storage_path('app/' . $path);
dump($path);
}
}
