Сериализация исключений 'Closure' не разрешена в Queue.php (строка 127)

У меня такая ситуация, когда у меня будет несколько запросов на одну страницу. Предполагается, что пользователь должен искать аффиксы (префикс, инфикс, суффикс), поэтому я сделал 3 панели поиска для каждого из них. Я наконец (?) Нашел решение проблемы, но всплыла другая проблема, и я понятия не имею, что могло ее вызвать.

Я получаю эту ошибку:

(1/1) Exception
   Serialization of 'Closure' is not allowed
   in Queue.php (line 127)
   at serialize(object(getPSearch))
   in Queue.php (line 127)
   at Queue->createObjectPayload(object(getPSearch))
   in Queue.php (line 108)
   at Queue->createPayloadArray(object(getPSearch), '', null)
   in Queue.php (line 86)
   at Queue->createPayload(object(getPSearch), '', null)
   in SyncQueue.php (line 37)
   at SyncQueue->push(object(getPSearch))
   in Dispatcher.php (line 184)
   at Dispatcher->pushCommandToQueue(object(SyncQueue), object(getPSearch))
   in Dispatcher.php (line 159)
   at Dispatcher->dispatchToQueue(object(getPSearch))
   in Dispatcher.php (line 73)
   at Dispatcher->dispatch(object(getPSearch))
   in DispatchesJobs.php (line 17)
   at Controller->dispatch(object(getPSearch))
   in HomeController.php (line 42)
   at HomeController->findAction(object(Request))

Мой домашний контроллер, функция findAction:

public function findAction(Request $request){
        if ($request->has('psearch')) {
            return $this->dispatch(new \App\Jobs\getPSearch($request));
        } elseif ($request->has('isearch')) {
            return $this->dispatch(new \App\Jobs\getISearch($request));
        } elseif ($request->has('ssearch')) {
            return $this->dispatch(new \App\Jobs\getSSearch($request));
        }
        return 'no action found';
    }

Мои задания getPSearch, getISearch, getSSearch (они имеют несколько одинаковые функции, но разные переменные):

protected $data;
public function __construct($data)
{
    $this->data = $data;
}

public function handle()
{
    $data = $this->data;
    $prefixes = DB::table('circumfixes')->select('*')->distinct()->where('prefix', '=', $data.'-')->get();
    $infixes=DB::table('infixes')->select('*')->distinct()->get();
    $suffixes=DB::table('suffixes')->select('*')->distinct()->get();

    $affixes=[
        'prefixes' => $prefixes,
        'infixes' => $infixes,
        'suffixes' => $suffixes
    ];
    return view('home', $affixes);
}

Мои маршруты для них:

Route::get('/home', 'HomeController@index')->name('home');
Route::post('/home', 'HomeController@findAction');

Я пытался найти, как решить проблему в Интернете, но я не могу найти решение, которое я мог бы понять. Я новичок в Laravel, поэтому у меня могут быть трудности в понимании некоторых моментов, но я очень хочу выучить это! Я надеюсь, что смогу найти ответ.

1 ответ

Вместо $request ... передайте $request->all() в качестве аргумента конструктору Jobs

Другие вопросы по тегам