Задание Laravel 5.1 работает, если немедленно, но не выполняется, если в очереди из-за ошибки модели Eloquent

У меня есть работа Laravel, которую я отправляю для чтения данных о клиентах из файла. Задание имеет зависимость модели регистратора, и этот регистратор отслеживает определенную статистику, а затем записывает в таблицу базы данных журнала по завершении задания. Когда я немедленно отправляю это задание, оно работает нормально, но если я ставлю в очередь точно такое же задание с точно такими же параметрами, а затем запускаю его из очереди, происходит сбой с ошибкой:

[Illuminate\Database\Eloquent\ModelNotFoundException]
No query results for model [app\Models\MyModel].

Я думаю, что это происходит из-за природы сериализации / несериализации, присущей системе очередей Laravel, которая ломает Eloquent, который пробует метод findOrFail (), когда я на самом деле никогда не пытаюсь найти что-то в БД. Я просто создаю новый журнал из пустой модели. Как бы то ни было, ясно, что одна и та же работа Laravel, если она не находится в очереди, работает нормально — но она терпит неудачу, когда в очереди. Я в недоумении и думаю, есть ли способ обойти эту проблему.

Благодарю.

2

Решение

Я обошел его, создав экземпляр и сохранив объект модели, прежде чем передать его в конструктор задания, так что он по крайней мере имеет первичный ключ. Это исключает метод findOrFail (). Немного хакерский, но это лучшее, что я мог придумать.

2

Другие решения

Сделайте обработчик ошибок (поместите его в ваши маршруты)

App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $e)
{
return Response::make('Not found',404);
});
-2

По вопросам рекламы [email protected]