Черта Laravel Queue SerializesModels удаляет связанные значения - PullRequest
0 голосов
/ 18 октября 2019

Перед отправкой задания я выполняю красноречивый запрос, объединяющий три таблицы и выбирающий данные из каждой из этих таблиц. Я передаю результат в конструктор задания и присваиваю его данным $ this-> data, но считаю, что черта SerializesModels удаляет все соединенные данные, потому что:

Из-за черты SerializesModels, используемой заданием, Eloquent модели будут изящно сериализованы и не сериализованы при обработке задания. Если ваше задание в очереди принимает модель Eloquent в своем конструкторе, в очередь будет сериализован только идентификатор модели. Когда задание действительно обрабатывается, система очередей автоматически повторно извлекает полный экземпляр модели из базы данных.

Поэтому, когда я собираюсь использовать $ this-> data в методе handle, все присоединяемыеданные пропали, потому что система очередей повторно извлекла экземпляр модели.

Как мне предотвратить это? Я не хочу перезапускать уже выполненный запрос.

1 Ответ

1 голос
/ 18 октября 2019

Ваша единственная возможность - удалить черту SerializesModels, которая будет хранить необработанные данные в таблице.

То, что вы испытываете, - это ожидаемое поведение с этой чертой. Это связано с тем, что, помимо прочего, вы не получите огромных объемов данных, хранящихся в БД, от хранения необработанной модели + отношений.

Имейте в виду, что если вы удалите черту, убедитесь, чтостолбец, в котором вы храните данные, достаточно велик для хранения всех данных, иначе вы столкнетесь с проблемами усечения.

...